我的模型中有这段代码:
added_time = models.DateTimeField(
default=datetime.datetime.now()
)
在我迁移并重新启动 uwsgi 之后,我现在在 MariaDB 中获得了第一个日期时间,接下来是所有日期时间 - 与重置 uwsgi 后的第一个完全相同。
2015-04-19 16:01:46
2015-04-19 16:01:46
2015-04-19 16:01:46
2015-04-19 16:01:46
我通过将代码更改为以下方式修复了它:
added_time = models.DateTimeField(
auto_now_add=True
)
虽然我解决了问题,但我不确定为什么会出现这种行为?
最佳答案
default=datetime.datetime.now()
在模型的解析/编译时进行评估。之后不会更改。要在添加/更新对象时评估 now()
,您必须使用:
default=datetime.datetime.now
,将 now
设置为可调用。 Django 会在运行时调用它。
您使用 auto_now_add
的解决方案当然也是正确的(但在语义上不同——传递默认值将在每次保存模型时设置值,而 auto_now_add
仅在创建时执行一次)。
别灰心,这很正常common错误。
关于python - 模型中的 Django default=datetime.now() 在 uwsgi 重置后总是保存相同的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733203/