【问题标题】:Bizarre Django model behavior with created/updated DateTimeFields具有创建/更新的 DateTimeFields 的奇异 Django 模型行为
【发布时间】: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 时。

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

添加新模型实例

  1. 自动更新创建日期
  2. 自动更新 modified_date

更新模型实例

  1. creation_date 保持原始(预期行为)不变
  2. 自动更新 modified_date

但是,一旦拉到我的实时服务器,我们就会出现这种行为:

添加新模型实例

  1. 自动更新创建日期
  2. 自动更新 modified_date

更新模型实例

  1. creation_date 设置为 0000-00-00 00:00:00.000000(意外行为
  2. 自动更新 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.... 这应该不是问题哈哈哈

标签: python django datetime


【解决方案1】:

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

【讨论】:

  • 将 MySQL 更新到 5.6.25,重新启动 MySQL,重新启动 Apache...同样的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-03
  • 2020-06-22
  • 2011-05-10
  • 1970-01-01
  • 2012-03-15
  • 2019-08-04
相关资源
最近更新 更多