Bizarre Django模型行为与创建/更新DateTimeFields

时间:2015-07-22 23:48:02

标签: python django datetime

在我的每个模型上,我都喜欢跟踪创建和修改的时间。我总是将它添加到我的模型类中:

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):
    ...

今天,有史以来第一次,当我在开发服务器上运行项目而不是我的实时服务器时,我看到了奇怪的行为。

注意:值得注意的是,我的手动模型creation_date / modified_date设置以及django_extensions使用TimeStampedModel时会出现以下行为。

在我的开发服务器上,它按预期工作:

添加新模型实例

  1. 自动更新creation_date
  2. 自动更新modified_date
  3. 更新模型实例

    1. creation_date保持未修改其原始(预期行为)
    2. 自动更新modified_date
    3. 但是,一旦被拉到我的实时服务器,我们就会出现这种情况:

      添加新模型实例

      1. 自动更新creation_date
      2. 自动更新modified_date
      3. 更新模型实例

        1. creation_date设置为毛刺00:00:00.000000(意外行为
        2. 自动更新modified_date
        3. 开发服务器:

          • 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的轻微修订。那不应该是一个问题,但是,我在这里......得到这种奇怪的行为。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在5.6.25中修复了一个日期时间错误(请参阅http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-25.html#mysqld-5-6-25-bug) - 尝试更新您的实时系统。