【发布时间】: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
在我的 models.py 中,我为特定字段设置了 null=True。
date = models.DateField(null=True)
我将其留空并按提交。当我在 views.py 中处理 POST 请求时,我打印出 request.POST 并且日期等于“”。我如何让 is_valid 接受它作为空值?
【问题讨论】:
标签: django django-models django-forms
默认不是布尔字段。默认值是您为设置列的默认值而提供的内容。删除默认并尝试再次提交表单。
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 关键字参数针对表单字段,而不是与 db 相关的 null。你可以在这里阅读它https://docs.djangoproject.com/en/1.7/ref/models/fields/#blank
【讨论】: