Changing required field in form based on condition in views (Django)

大城市里の小女人 提交于 2019-12-12 10:06:56

问题


I have a form, LabelingForm() with two multiplechoicefields and I wish to set the required - parameter so that it is False when pressing button A and B but True when pressing button C. I 've tried with initial = False and required = True but it doesn't work, it requires field choice when pressing button A.

in 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

in template

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

回答1:


Change the required attribute before the calling of is_valid():

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


来源:https://stackoverflow.com/questions/30054539/changing-required-field-in-form-based-on-condition-in-views-django

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!