在其中一个模型中,我设置了一个时间戳字段,如下所示:
created_datetime = models.DateTimeField(auto_now_add = True)
虽然在shell中我能够创建一个obj并保存它,但是在我的应用程序中它引发了一个异常,即created_datetime字段不能为null。
事情出了问题困惑!!如何重新获得它。
在其中一个模型中,我设置了一个时间戳字段,如下所示:
created_datetime = models.DateTimeField(auto_now_add = True)
虽然在shell中我能够创建一个obj并保存它,但是在我的应用程序中它引发了一个异常,即created_datetime字段不能为null。
事情出了问题困惑!!如何重新获得它。
你可以做这样的事情
created_datetime = models.DateTimeField(auto_now_add=True, auto_now=False)
据我所知,默认日期时间的最佳做法是使用以下内容:
created_datetime = models.DateTimeField(default=datetime.datetime.now)
不要忘记导入日期时间
我有这个,它真的困惑了我多年。
原来我的模型有一个自定义主键,这是由于在构造一些测试对象时没有设置它的bug。
这第一次很好用 auto_now_add
组 created_at
。第二次没有因为具有空主键的对象已经存在,所以它正在进行更新。它试图将其设定为 created_at
null,这在我的模型中是不允许的。
所以值得检查一下,如果您最终在这个问题上出现错误“在我的应用程序中它引发了一个异常,即created_datetime字段不能为空”,这可能是因为没有正确设置主键。
解决方案是我正确设置主键。
以下方法是在django文档的“part1”中
from django.utils import timezone
p = Poll(question="What's new?", pub_date=timezone.now())