Django条件需要整个表单

时间:2017-02-26 12:53:42

标签: django django-forms

如何根据同一页面上另一个表单的字段有条件地要求填写整个表单?

forms.py:

from django import forms

class OptionForm(forms.Form):
    """Whether or not the user wants to fill the contact form"""
    fill_form = forms.BooleanField(initial=True)

class ContactForm(forms.Form):
    name = forms.CharField()
    email = forms.EmailField()
    phone = forms.CharField(required=False)
    # ... and many more fields

规格:

如果用户勾选OptionForm中的复选框,则表示他/她想要填写ContactForm,因此我们必须确保ContactForm已填写且正确/验证。另一方面,如果用户取消选中复选框,我们应该忽略ContactForm中的所有输入。

我如何达到上述规格?我正在使用基于功能的视图。我能想到的一个解决方案是仅根据复选框的值运行is_valid()。与此相关的复杂性是,呈现的html ContactForm的输入具有必需属性,如果ContactForm为空,即使用户取消选中该复选框,也会阻止用户提交表单。

1 个答案:

答案 0 :(得分:0)

如果表格的必填字段为空,则Django不会阻止您提交表单;这将是你的浏览器。使用novalidate元素中的<form>来禁用此功能。