我有一個(gè)這樣的函數(shù) - 有沒有辦法包裝這個(gè)函數(shù),以便將兩個(gè)保存合并為一個(gè)? 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我不取消縮進(jìn)的原因self.save()是為了避免updated_at在沒有發(fā)生更改的情況下更新對(duì)象上的字段。
1 回答

慕妹3242003
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
self.save()僅當(dāng)changedisTrue位于子句末尾時(shí),您才能執(zhí)行 a if:
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
因此,只有當(dāng)兩個(gè)子句之一if觸發(fā)時(shí),它才會(huì)設(shè)置changed為True。僅當(dāng)changed設(shè)置為時(shí)True,我們才保存對(duì)象。crated_at因此,如果和都是真實(shí)的,我們?cè)谶@里避免了與數(shù)據(jù)庫的額外往返self.active。
添加回答
舉報(bào)
0/150
提交
取消