2009-12-30 66 views
2

我有一个模型(和基于它的模型形式),它有几个时间字段。我希望这些字段是可选的,以便用户可以留下一些空的。我的问题是,当我试图保存一个或多个这些字段为空的实例时,我仍然收到“列'mechreturn_tm'不能为空”的错误。我已经使用以下方法:TimeField有关空白/空的问题

mechreturn_tm = models.TimeField(blank=True, null=False) 
mechreturn_tm = models.TimeField(blank=True, null=True) 
mechreturn_tm = models.TimeField() 

似乎没有工作。我究竟做错了什么?

+0

这些'(空白=真,空=真)'的第二个应该工作。你放弃了模型的表并且再次运行'syncdb'吗?尝试在db shell或'manage.py sql '中执行'describe

'来查看它将如何创建表。 – tcarobruce2009-12-30 18:16:40

回答

1

你确定你仍然使用第二种方法得到错误(空白和空值设置为True)?

请记住,由于syncdb不会更改现有表,因此在进行此更改时需要重新创建数据库表。这可能就是为什么即使使用正确的代码也会出错。

在模型字段上设置blank=True表示在使用该字段验证窗体时允许该字段为空。

设置null=True意味着该模型可以保存到数据库中,对该字段没有任何价值。

http://docs.djangoproject.com/en/dev/topics/db/models/#field-options

+0

感谢John和tcarobruce。我认为这是问题,因为我在每次更改之后都尝试了syncdb,而没有先删除表。将删除然后重新创建与更改的代码表。 – kjarsenal 2009-12-30 18:23:45

+0

再次感谢。 mechreturn_tm = models.TimeField(空白=真,空=真)工作正常。 – kjarsenal 2009-12-30 18:35:11

+0

每次更换模型时都不要同步数据库,而是使用南。 – Pawan 2014-07-04 12:49:01