这个问题现在已经发生了几个星期,现在和我的项目不同。
使用的两个模型都有一个时间戳字段,默认情况下设置为timezone.now()
。
这是引发错误标志的序列:
模型一在下午7:30创建
模型二是在晚上10点创建的,但是在 MySQL数据库存储为晚上7:30!
创建的每个模型 将时间戳保存在下午7:30,而不是实际时间,直到确定 持续时间通过然后设置新时间和以下所有模型 有新的时间...... Bizzare
可能有助于发现问题的一些额外细节:
我有一堆方法用于剥离tzinfo
的时区,并用UTC替换它们。
这是因为我正在进行timezone.now() - creationTime
计算以创建:“模型已在很久以前发布”功能
在项目中。但是,这确实不应该是问题的原因。
我认为使用datetime.datetime.now()
也不会产生任何影响。
无论如何,谢谢你的帮助!
答案 0 :(得分:48)
上周刚刚遇到default=date.today()
的字段。如果删除括号(在这种情况下,尝试default=timezone.now
),那么您将一个可调用的函数传递给模型,并且每次保存新实例时都会调用它。使用括号时,只有在models.py
加载时才会调用它。
答案 1 :(得分:9)
只需像这样设置参数auto_now_add
。
timestamp = models.DateTimeField(auto_now_add=True)
更新
请不要使用auto_now_add
。这不是推荐的方式,而是这样做:
from django.utils import timezone
timestamp = models.DateTimeField(default=timezone.now)