1
假設我正在運行的幾個模型對象在Django的更新:我是否需要在事務中包裝django更新?
SomeModel.objects.filter(name="abc").update(name="xyz")
我需要在transaction.atomic
來包裝呢?如果我不這樣做會有什麼不好嗎?
假設我正在運行的幾個模型對象在Django的更新:我是否需要在事務中包裝django更新?
SomeModel.objects.filter(name="abc").update(name="xyz")
我需要在transaction.atomic
來包裝呢?如果我不這樣做會有什麼不好嗎?
Django的默認事務模型是自動提交到數據庫。這意味着如果在提交了一些更改之後出現異常,但是在所有更改都已提交之前,您最終可能會遇到問題或不確定。這取決於你想要做什麼。這是一個潛在的問題,根據您自己的代碼?是否存在發生錯誤的風險,如果是這樣,那麼會出現一些對象已被更新但不是其他問題的問題嗎?
如果是這樣,您可以通過使用@ transaction.atomic修飾符(對於函數)或通過用with transaction.atomic():
包裝特定的代碼片段來阻止此操作。這將在發生錯誤時回滾對數據庫的更改。爲了超級安全,我想你總是可以使用原子事務,但是你需要嗎?