【发布时间】:2015-10-13 01:57:57
【问题描述】:
在我的每个模型上,我都喜欢跟踪创建和修改时间。我总是将它添加到我的模型类中:
class SomeModel(models.Model):
...
creation_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
酷。简单吧?对。或者你总是可以这样做:
from django_extensions.db.models import TimeStampedModel
class SomeModel(TimeStampedModel):
...
今天,我第一次看到在我的开发服务器上运行项目而不是在我的实时服务器上运行项目时出现的奇怪行为。
注意:值得注意的是,以下行为发生在我的手动模型创建日期/修改日期设置以及我使用 django_extensions 中的 TimeStampedModel 时。
在我的开发服务器上,它按预期工作:
添加新模型实例
- 自动更新创建日期
- 自动更新 modified_date
更新模型实例
- creation_date 保持原始(预期行为)不变
- 自动更新 modified_date
但是,一旦拉到我的实时服务器,我们就会出现这种行为:
添加新模型实例
- 自动更新创建日期
- 自动更新 modified_date
更新模型实例
- creation_date 设置为 0000-00-00 00:00:00.000000(意外行为)
- 自动更新 modified_date
开发服务器:
- Django 1.8
- Python 2.7.9
- MySQL Ver 14.14 Distrib 5.6.25
实时服务器:
- Django 1.8
- Python 2.7.9
- MySQL Ver 14.14 Distrib 5.6.24
正如您所见,它们之间的唯一区别是对 MySQL 的轻微修改。这不应该是一个问题,但是,我在这里......得到了这种奇怪的行为。有什么想法吗?
【问题讨论】:
-
MySQL.... 这应该不是问题哈哈哈