【问题标题】:Django: Optional model form fieldDjango:可选模型表单字段
【发布时间】:2015-10-10 22:40:47
【问题描述】:

我的应用程序中有一个模型表单,我希望我的两个模型表单字段是可选的,即用户可以将这两个表单字段留空,并且 Django 表单验证不应该引发相同的错误。

我为这两个字段设置了blank = Truenull = True,如下所示:

questions = models.CharField(blank=True, null = True, max_length=1280)
about_yourself = models.CharField(blank=True, null = True, max_length=1280)

forms.py

questions = forms.CharField(help_text="Do you have any questions?", widget=forms.Textarea)
about_yourself = forms.CharField(help_text="Tell us about yourself", widget=forms.Textarea)

但是,如果这两个字段在提交时留空,则会引发 This field is required

这里似乎有什么问题?如何在 Django 中设置可选的模型表单字段?

【问题讨论】:

    标签: python django forms python-2.7


    【解决方案1】:

    我认为你需要为表单添加required=False 参数。

    像这样:

    questions = forms.CharField(help_text="Do you have any questions?", widget=forms.Textarea, required=False)
    about_yourself = forms.CharField(help_text="Tell us about yourself", widget=forms.Textarea, required=False)
    

    【讨论】:

      【解决方案2】:

      我认为这是因为您重新定义了表单中的字段,所以如果您的模型名称是 MyModel,那么您只需定义一个 ModelForm

      MyModelForm(forms.ModelForm):
          class Meta:
              model = MyModel
      

      它会起作用,但由于您定义了字段,它使用 django fields.Field 的默认值,这是必需的=True

      您可以简单地将 required=True 添加到您的字段定义中

      【讨论】:

      • 这个答案适合我,因为它适用于表单定义的字段,我需要 required=False
      【解决方案3】:

      试试这个:

      questions = forms.CharField(help_text="Do you have any questions?", widget=forms.Textarea, required=False)
      about_yourself = forms.CharField(help_text="Tell us about yourself", widget=forms.Textarea, required=False)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-30
        • 2013-04-27
        • 2013-01-07
        • 2017-01-26
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        • 2018-07-05
        相关资源
        最近更新 更多