python - 根据 View 中的条件更改表单中的必填字段(Django)

标签 python django forms required multiplechoicefield

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

在表单中

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>

最佳答案

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

关于python - 根据 View 中的条件更改表单中的必填字段(Django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30054539/

相关文章:

python - 如何在 django 中设置该字段唯一?

django - 如何在 Django session 中存储表单输入?

javascript - Jquery:在表单上提交验证然后允许默认操作继续

javascript - 为什么ReactJS处理radio `checked` attr与其他attrs不同?

python - 使 Python unittest 显示 AssertionError 但没有 Traceback

python - Networkx Spring 布局边缘权重

python - Django 分页与 get_absolute_url 方法

android - 如何在 Android 上修复 "Only the original thread that created a view hierarchy can touch its views"Xamarin Forms

python - 按列比较 2 个 pandas 数据帧的行并保持更大和总和

python - 如何对特征矩阵进行行归一化?广播错误