Django DateTimeField auto_now_add无效

时间:2011-05-05 14:58:41

标签: python django datetime model

在其中一个模型中,我按如下方式设置了一个时间戳字段:

created_datetime = models.DateTimeField(auto_now_add = True)

虽然在shell中我可以创建一个obj并保存它但是在我的应用程序中它引发了一个异常,即created_datetime字段不能为null。

在出错的地方感到困惑!!如何重新开始。

4 个答案:

答案 0 :(得分:12)

据我所知,默认日期时间的最佳做法是使用以下内容:

created_datetime = models.DateTimeField(default=datetime.datetime.now)

不要忘记导入日期时间

答案 1 :(得分:2)

你可以做这样的事情

created_datetime = models.DateTimeField(auto_now_add=True, auto_now=False)

答案 2 :(得分:1)

我有这个,它让我迷惑了好久了。

原来我的模型有一个自定义的主键,这是由于在构造一些测试对象时没有设置错误的原因。

第一次将auto_now_add设置为created_at时,效果很好。第二次它不存在,因为具有空主键的对象已经存在,所以它正在进行更新。并且尝试将其设置为created_at null,这在我的模型中是不允许的。

因此值得检查一下,是否以“在我的应用程序中它引发了一个created_datetime字段不能为null的异常”的错误结束此问题,这可能是由于未正确设置主键引起的。

解决方案是为我正确设置主键。

答案 3 :(得分:-1)

以下方法是在django文档的“part1”中

from django.utils import timezone
p = Poll(question="What's new?", pub_date=timezone.now())