zoukankan      html  css  js  c++  java
  • ModelForm的使用

    from django.forms import Form,ModelForm,fields,widgets as wd
    class QueModelForm(ModelForm):
        class Meta:
            model=models.Question  #
            fields=['caption','tp']
            error_messages = {
                'caption':{'required':'名称不等为空','invalid':'格式错误'},
                'tp':{'required':'名称不等为空','invalid':'格式错误'}
            }
            widgets = {
                'caption':wd.TextInput(attrs={'class':'form-control',}),
                # 'tp':wd.TextInput(attrs={'class':'form-control'})
            }
    
    class UserTypeModeForm(ModelForm):
        title = fields.CharField(max_length=6,required=True,widget=wd.Textarea())
    
        class Meta:
            model = models.UserType
            fields = "__all__"
    
            error_messages = {
                'title':{'required':'名称不能为空','invalid':'格式错误'}
            }
            widgets = {
                'title':wd.TextInput(attrs={'class':'c1'})
            }
    
    
    def edit_que(request,que_id):
        # if request.is_ajax():
        #     print(111)
        #     models.Question.objects.create(questionnaire_id=que_id,)
        # que_list=models.Question.objects.filter(questionnaire_id=que_id)
        # return render(request,'edit_que.html',{'que_list':que_list,'que_id':que_id})
    
        def inner():
            que_list=models.Question.objects.filter(questionnaire_id=que_id)
            if not que_list:
                form=QueModelForm()
                yield {'form':form,'obj':None}
            else:
                for que in que_list:
                    form=QueModelForm(instance=que)
                    Opform=OptionModelForm()
                    temp={'form':form,'Opform':Opform,'obj':que,'option_class':'hide','options':None}
                    if que.tp == 2:
                        temp['option_class']=''
                        def inner_loop(quee):
                            option_list=models.Option.objects.filter(qs_id=quee)
                            for v in option_list:
                                yield {'form':OptionModelForm(instance=v),'obj':v}
                        temp['options']=inner_loop(que)
                    print('temp',form)
                    yield temp
        return render(request,'edit_que.html',{'form_list':inner()})
    #############################################
    #HTML部分
    
                    <ol>
    
    
                        
                        {% for item in form_list %}
    
                            <p></p>
                                    <button type="button" class="close X_btn" data-dismiss="modal" aria-label="Close" X_id="{{ item.obj.id }}"><span aria-hidden="true">&times;</span></button>
    
                        <li>
                        <div>
    
                            <p>问题名称:{{ item.form.caption }}</p>
                            <p>问题类型:{{ item.form.tp }} <a href="#" class=""data-toggle="modal" data-target="#myModal">添加选项</a></p>
                            <ul>{% for v in item.options %}
                            <li id="li_{{ v.obj.id }}">{{ v.form }}</li>
                            {% endfor %}
                            </ul>
                        </div>
                        </li>
                        {% endfor %}
    
                    </ol>
  • 相关阅读:
    【myEcplise2015】导入喜欢的主题
    【SVN】删除SVN上的历史资源路径和SVN上的历史用户信息
    【Linux】linux命令大全
    【Linux】在虚拟机上安装CentOS7
    Spring MVC+Mybatis 多数据源配置
    Spring 加载类路径外的资源文件
    OkHttp使用详解
    在虚拟机搭建JStrom
    在Windows下搭建RocketMQ
    解决confluence的乱码问题
  • 原文地址:https://www.cnblogs.com/ldq1996/p/7994699.html
Copyright © 2011-2022 走看看