:
该字段仅在调用Model.save()时自动更新。使用其他方式(如QuerySet.update())更新其他字段时,不会更新该字段,但您可以在更新中为该字段指定自定义值。
两者都必须执行更新查询,那么save.()
更新auto_now=True
字段和QuerySet.update()
不更新字段背后的原因是什么?
答案 0 :(得分:1)
更新查询意味着比常规字段更改和保存模式更快,因此它不会调用save()
方法,该方法处理更新auto_now
字段,发送信号等。如果您不确定自己在做什么,那么在模型上明确调用save()
总是一个好主意。高级和#34;限制较少" update
或bulk_create
等方法速度更快,适用于在数据库级别编辑数据。来自Django docs:
最后,意识到update()在SQL级别进行更新, 因此,不会在模型上调用任何save()方法,也不会 发出pre_save或post_save信号(这是...的结果 调用Model.save())。
如果您希望获得更多技术性解释,那么更新查询可能不会检查该表是否具有auto_now
字段。这需要一些数据收集并使过程变慢。如果您确实想要更新该字段,可以明确更新它。