來自django:爲什麼在使用QuerySet.update()時不會更新auto_now = True字段?
該字段僅在調用Model.save()時自動更新。在以其他方式更新其他字段(如QuerySet.update())時,字段不會更新,但您可以在更新中爲字段指定自定義值。
雙方將不得不執行更新查詢,所以背後是什麼save.()
的原因更新auto_now=True
場和QuerySet.update()
更新不及時的領域?
來自django:爲什麼在使用QuerySet.update()時不會更新auto_now = True字段?
該字段僅在調用Model.save()時自動更新。在以其他方式更新其他字段(如QuerySet.update())時,字段不會更新,但您可以在更新中爲字段指定自定義值。
雙方將不得不執行更新查詢,所以背後是什麼save.()
的原因更新auto_now=True
場和QuerySet.update()
更新不及時的領域?
更新查詢意味着比常規字段更改和保存模式更快,因此它不調用save()
方法,該方法處理更新auto_now
字段,發送信號等。如果您不確定自己在做什麼,那麼在模型上明確調用save()
總是一個好主意。高級和「限制較少」的方法(如update
或bulk_create
)速度更快,適用於編輯數據庫級別的數據。從Django文檔:
最後,實現更新()不更新在SQL水平, 因此,不調用任何save()方法在你的模型,也沒有 發出pre_save或post_save信號(這是 調用Model.save())的結果。
如果您希望獲得更多的技術說明,那麼更新查詢可能不會檢查表是否有auto_now
字段。這將需要收集一些數據並使過程變慢。如果您確實想更新該字段,則可以明確更新它。