Django 在 null=True 的字段上使用 is_valid

Django using is_valid on a field where null=True

在我的 models.py 中,我有一个特定字段的 null=True。

date = models.DateField(null=True)

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

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

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

好的,在阅读了其他几篇文章后,我发现了一些有用的东西(但我不确定这是好的做法还是过时的)...无论如何,我找到了 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

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

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

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