Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据视图中的条件更改表单中的必填字段(Django)_Python_Django_Forms_Required_Multiplechoicefield - Fatal编程技术网

Python 根据视图中的条件更改表单中的必填字段(Django)

Python 根据视图中的条件更改表单中的必填字段(Django),python,django,forms,required,multiplechoicefield,Python,Django,Forms,Required,Multiplechoicefield,我有一个表单,LabelingForm(),有两个多个EchoiceFields,我希望设置required-参数,以便在按下按钮a和B时为False,但在按下按钮C时为True。我尝试过使用initial=False和required=True,但不起作用,按下按钮a时需要字段选择 在forms.py中 class LabelingForm(forms.Form): First_choices = (('1',''), .....

我有一个表单,LabelingForm(),有两个多个EchoiceFields,我希望设置required-参数,以便在按下按钮a和B时为False,但在按下按钮C时为True。我尝试过使用initial=False和required=True,但不起作用,按下按钮a时需要字段选择

在forms.py中

class LabelingForm(forms.Form):



    First_choices = (('1',''),

             .....
            )

    First_choice = forms.MultipleChoiceField(choices=First_choices, initial=True,required=True)


    Second__choices = (('1',''),

      .....
            )

   Second_choice = forms.MultipleChoiceField(choices=Second_choices, initial=True,required=True)
in views.py

def function(request, postID):
       if request.method == 'POST':
          form = LabelingForm(request.POST)
          if form.is_valid():

        if "A" in request.POST:
             # required is false 

        if "B" in request.POST:
             # required is false 

        if "C" in request.POST:
             # required is true
           # change required to True 
            form.fields['First_choice'].required = True
            form.fields['Second_choice'].required = True
模板中

<form  action="" method="post">{% csrf_token %}
 <input type="submit"  name="A" value="Submit A"></input>

 <input type="submit"  name="B" value="Submit B"></input>
 # change so that required is True
 {{ labelingform.first_choice}}{{ labelingform.second_choice}}<input type="submit"  name="C" value="Submit C"></input>

</form>
{%csrf\u令牌%}
#更改以使所需为真
{{labelingform.first_choice}{{labelingform.second_choice}

在调用
有效()之前更改
required
属性


只需提到,在较新版本中,它应该是:form.fields['First_choice'].required=True form.fields['Second_choice'].required=True
   if request.method == 'POST':
      form = LabelingForm(request.POST)

      required = 'C' in request.POST
      form.fields['First_choice'].required = required
      form.fields['Second_choice'].required = required

      if form.is_valid():
          ...