Skip to main content
 首页 » 编程设计

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

2025年05月04日24zlslch

我有一个表单,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(): 
          ...