我的表单如下:
如果选中“进行中”框,我希望在保存表单时,MySQL数据库中的“结束日期”为空。
在我的模型中,我允许保存null值(我认为?):
end_date = models.DateField(default=datetime.date, blank=True, null=True)
我不知道这是否是最好的方法,但是在我的views.py中我有这一行:
if request.POST.get('end_year') == '- Year -':
end_date = datetime.date(None, None, None)
(我也会对月和日进行类似的检查)
但是当我尝试提交表单时,我会得到'需要整数'的例外情况。
作为一些额外的信息,当我手动尝试在db中将end_date更改为null时,我收到此错误:Incorrect date value: 'null' for column 'end_date' at row 1
我不确定最好的办法是什么。任何想法,将不胜感激。谢谢。
答案 0 :(得分:2)
在我看来,如果您从default
字段中删除end_date
,那么您就可以了。
end_date = models.DateField(blank=True, null=True)
现在,如果您的表单上正在进行中,那么就不要向end_date
字段提供任何数据。我想说你不应该这样做。
end_date = datetime.date(None, None, None)
但由于此字段没有模式default
,因此当它不在进行中时,只需从视图或表单中为其提供初始数据。
答案 1 :(得分:1)
我认为您应该检查以下内容:
end_date = models.DateTimeField(blank=True,null=True)
将end_date字段更新为NULL时,只需查询end_date = None
而不是end_date = datetime.date(None, None, None)
。