【问题标题】:Django 1.7.6 BUG with DateTimeField(auto_now=True) AND .update queries?带有 DateTimeField(auto_now=True) AND .update 查询的 Django 1.7.6 BUG?
【发布时间】:2015-05-06 21:31:35
【问题描述】:

我遇到了一个非常严重的错误,我花了几个小时才弄清楚为什么我无法连接 Postgres 数据库中的所有点。

我的 django 应用中有一个模型,它有这个字段:

last_modified_on = models.DateTimeField(auto_now=True)

在我的代码中的某一时刻我使用

members.update(first_name=first_name,.....)

一切正常,更新正常,除了一个字段:

last_modified_on

在做了一些研究后,我找到了this,但该修复的版本和日期非常值得怀疑。

有谁知道发生了什么以及解决它的最佳方法是什么?

【问题讨论】:

    标签: python django postgresql django-queryset


    【解决方案1】:

    意识到 update() 在 SQL 级别进行更新,因此, 不在模型上调用任何 save() 方法,也不发出 pre_save 或 post_save 信号(这是调用的结果 模型.save())。如果你想为一个模型更新一堆记录 有一个自定义的 save() 方法,遍历它们并调用 save(),比如 这个:

    for m in YourModel.objects.filter(....):
        m.first_name = "First Name"
        m.save()
    

    您还应该知道,如果您的模型中有一个客户save 方法,它将不会被调用。在安全区域内。

    【讨论】:

      猜你喜欢
      • 2010-09-06
      • 2017-03-17
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 2021-09-25
      • 1970-01-01
      相关资源
      最近更新 更多