Django DateTimeField auto_now_add 不起作用
在我的一个模型里,我设置了一个时间戳字段,具体如下:
created_datetime = models.DateTimeField(auto_now_add = True)
虽然在命令行里我可以创建一个对象并保存它,但在我的应用程序中却出现了一个错误,提示说 created_datetime 字段不能是空的。
我搞不清楚问题出在哪里!该怎么解决呢?
5 个回答
4
我之前遇到这个问题,搞了我很久。
后来发现是因为我的模型有一个自定义的主键,而在创建一些测试对象时,出现了一个错误,没有正确设置这个主键。
第一次运行的时候没问题,因为 auto_now_add
自动设置了 created_at
字段。第二次运行就出问题了,因为已经有一个主键为空的对象存在,所以它试图更新那个对象。而它想把 created_at
设置为 null,但在我的模型里这是不允许的。
所以如果你在遇到“在我的应用中,抛出了一个异常,提示 created_datetime 字段不能为 null”的错误时,可以检查一下是否是主键没有正确设置导致的。
我的解决办法就是正确设置主键。
15
据我所知,设置默认日期时间的最佳做法是使用以下代码:
created_datetime = models.DateTimeField(default=datetime.datetime.now)
别忘了导入 datetime 这个模块哦。
3
你可以这样做
created_datetime = models.DateTimeField(auto_now_add=True, auto_now=False)