Django:在数据库

时间:2016-10-24 02:00:04

标签: django python-2.7 datetime django-models django-views

我的表单如下:

enter image description here

如果选中“进行中”框,我希望在保存表单时,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

我不确定最好的办法是什么。任何想法,将不胜感激。谢谢。

2 个答案:

答案 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)

我认为您应该检查以下内容:

  1. end_date = models.DateTimeField(blank=True,null=True)

  2. 将end_date字段更新为NULL时,只需查询end_date = None而不是end_date = datetime.date(None, None, None)