【问题标题】:Changing required field in form based on condition in views (Django)根据视图中的条件更改表单中的必填字段(Django)
【发布时间】:2015-07-15 06:42:37
【问题描述】:

我有一个表单,LabelingForm() 带有两个多项选择字段,我希望设置所需的 - 参数,以便在按下按钮 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)

在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>

【问题讨论】:

    标签: python django forms required multiplechoicefield


    【解决方案1】:

    在调用is_valid()之前更改required属性:

       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():
              ...
    

    【讨论】:

    • 只是提一下,在较新的版本中应该是:form.fields['First_choice'].required = True form.fields['Second_choice'].required = True
    猜你喜欢
    • 1970-01-01
    • 2018-02-16
    • 2021-04-14
    • 2010-11-11
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多