如何在同一個查詢集上運行更新和select語句,而不是必須執行兩個查詢,一個選擇對象,一個更新對象?Django更新對象
在SQL等價會是這樣的:
update my_table set field_1 = 'some value' where pk_field = some_value
如何在同一個查詢集上運行更新和select語句,而不是必須執行兩個查詢,一個選擇對象,一個更新對象?Django更新對象
在SQL等價會是這樣的:
update my_table set field_1 = 'some value' where pk_field = some_value
使用查詢集object update
method:
MyModel.objects.filter(pk=some_value).update(field1='some value')
Django的數據庫對象使用用於創建和修改對象相同的save()方法。
obj = Product.objects.get(pk=pk)
obj.name = "some_new_value"
obj.save()
的Django如何知道要UPDATE與INSERT
如果對象的主鍵屬性被設置爲計算結果爲真的值(即以外的值 無或空字符串) ,Django執行一個UPDATE。如果 對象的主鍵屬性未設置,或者如果UPDATE未更新,則Django執行INSERT。
參考:https://docs.djangoproject.com/en/1.9/ref/models/instances/
只是一個公平的警告......如果你這樣使用'update'方法則附加到該模型或其他「代碼的東西」的任何信號將不會運行鍼對對象。只是一個人燒誰的指針:) – 2012-01-26 06:01:47
@ DMactheDestroyer老兄感謝有價值的信息。那麼我們應該使用舊的更新方式嗎? (即)獲得並保存? – 2015-07-17 05:39:27
@學習得好,這一切都取決於你的情況。 'update'方法適用於批量更新,但在使用時會引發一些警告,您需要查看附加到該對象的任何信號,這些信號可能還需要手動觸發 – 2015-07-17 15:19:20