我有兩個線程,其中一個運行類似update t set ColA=foo
而另一個運行update t set ColB=foo
。如果他們正在執行原始SQL語句,則不會有爭用,但由於Django獲取並保存整行,因此可能會出現爭用情況。Django部分更新
有什麼辦法可以告訴Django我只想保存某個列嗎?
我有兩個線程,其中一個運行類似update t set ColA=foo
而另一個運行update t set ColB=foo
。如果他們正在執行原始SQL語句,則不會有爭用,但由於Django獲取並保存整行,因此可能會出現爭用情況。Django部分更新
有什麼辦法可以告訴Django我只想保存某個列嗎?
你是對的,save
將更新整行,但Django有一個update
這完全符合你所描述的。
https://docs.djangoproject.com/en/stable/ref/models/querysets/#update
我認爲你唯一的選擇就是用手寫出原始SQL,使用Manager.raw()或a cursor,這取決於哪一個更合適。
更新舊主題。
現在,我們有update_fields參數與保存:
如果保存()傳遞的字段名稱的列表中的關鍵字參數 update_fields,只有在該列表中指定的字段將被更新。
https://docs.djangoproject.com/en/stable/ref/models/instances/#specifying-which-fields-to-save
product.name = 'Name changed again'
product.save(update_fields=['name'])
的鏈接斷開 –
我已經更新使用最新的穩定版本的鏈接。 –