[英]Django: Combine multiple saves into one database action
我有一個這樣的 function——有沒有辦法將這個 function 包裝起來,以便將兩個保存合並為一個?
def foobar(self, created_at=None):
changed = False
if created_at:
changed = True
self. created_at = created_at
self.save()
if self.active:
changed = True
self.active = False
self.save()
return self
我不取消縮進self.save()
的原因是為了避免在沒有發生變化的情況下更新我的 object 上的updated_at
字段。
if
子句末尾的changed
為True
,則只能執行self.save()
:
def foobar(self, created_at=None):
changed = False
if created_at:
changed = True
self.created_at = created_at
if self.active:
changed = True
self.active = False
if changed:
self.save()
return self
因此,只有當兩個if
子句之一觸發changed
,這才會設置為True
。 只有當changed
設置為True
時,我們才保存 object。因此,如果crated_at
和self.active
都是真實的,我們在這里避免了額外的數據庫往返。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.