【问题标题】:Update auto_now field in bulk_update更新 bulk_update 中的 auto_now 字段
【发布时间】:2020-09-29 09:16:07
【问题描述】:
我正在使用 Django 2.2,并且我有一个带有 auto_now modification_datetime 字段的模型,我需要在 bulk_update 执行期间/之后更新它,仅适用于真正更新的受影响注册表。
是否可以通过bulk_update 执行仅在受影响的记录上更新auto_now 日期时间模型字段?
【问题讨论】:
标签:
django
django-models
bulkupdate
【解决方案1】:
不,因为bulk_update() 不会调用save() 方法,也不会在实例上触发pre_save 和post_save 信号(通常只产生单个更新查询)。通常也不会回忆起在 Django 中实际更新的实例
此外,正如 auto_now 所记录的那样,它不会在 update()/bulk_update() 上触发,因为它是由 save() 触发的
该字段仅在调用 Model.save() 时自动更新。这
以其他方式更新其他字段时,字段未更新
例如 QuerySet.update(),尽管您可以为
像这样的更新中的字段。
您可以检查哪些实例已手动更新并更新其时间戳或执行某种数据库触发器