【问题标题】:Django using is_valid on a field where null=TrueDjango 在 null=True 的字段上使用 is_valid
【发布时间】:2015-01-08 21:53:45
【问题描述】:

在我的 models.py 中,我为特定字段设置了 null=True。

date = models.DateField(null=True)

我将其留空并按提交。当我在 views.py 中处理 POST 请求时,我打印出 request.POST 并且日期等于“”。我如何让 is_valid 接受它作为空值?

【问题讨论】:

    标签: django django-models django-forms


    【解决方案1】:

    默认不是布尔字段。默认值是您为设置列的默认值而提供的内容。删除默认并尝试再次提交表单。

    https://docs.djangoproject.com/en/1.7/ref/models/fields/#default

    【讨论】:

    • 这并没有改变什么
    • 那么这里还有其他事情发生,但我的评论仍然是准确的,如果不能解决问题:)
    【解决方案2】:

    好的,在阅读了其他一些帖子后,我发现了一些有用的东西(但我不确定这是好的做法还是过时的)......无论如何,我找到了 here。这是我使用的示例:

    class FooForm(forms.ModelForm):
      class Meta:
        #exclude etc as you wish
    
      def __init__(self, *args, **kwargs):
    
        #init the form as usual
        super(FooForm, self).__init__(*args, **kwargs)
    
        #then change the required status on the fields:
        self.fields['baz'].required = False
    

    【讨论】:

      【解决方案3】:

      我认为您需要将blank=True 添加到该字段中,仅此而已。

      date = models.DateField(null=True, blank=True)
      

      blank 关键字参数针对表单字段,而不是与 db 相关的 null。你可以在这里阅读它https://docs.djangoproject.com/en/1.7/ref/models/fields/#blank

      【讨论】:

        猜你喜欢
        • 2018-06-15
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        • 2018-11-12
        • 1970-01-01
        • 2017-03-07
        • 2015-09-28
        • 2014-08-07
        相关资源
        最近更新 更多