如何在保存相關模型的實例時自動更新模型的字段?我需要解決這樣的情景:保存其他多對多相關模型時自動更新Django模型中的特定字段
class First(models.Model):
name = models.CharField(max_length=100)
assigned = models.BooleanField(default=False)
class Second(models.Model):
some_attribute = models.CharField(max_length=100)
firsts = models.ManyToManyField(First)
所以,每次我創建二審時我想自動更新「分配」屬性爲第一種模式的每一個相關的對象,並將其更改爲True。
爲了簡化,我並不是說我在同一個項目的不同應用程序中有這個模型,我想這不是那麼相關,我只需要它的基礎知識。
我試圖重寫第二的保存方法,但有麻煩通過相關對象進行迭代:
def save(self, *args, **kwargs):
super(Second, self).save(*args, **kwargs) # Call the "real" save() method.
items = self.firsts
for item in items:
item.assigned = True
item.save()
我也試圖避免信號,因爲這聽起來像是和推進的話題,我是初學者程序員和我intuit應該有一個更簡單的方法來做到這一點。 'First'對象在該模型的CreateView中創建;內聯formset是不需要的。
感謝您的幫助。
這將有助於如果你想發佈您的代碼重寫保存方法,因爲這可能是解決方案。 (最好避免信號) –
Second @ Mr.Nun。共享你正在使用的'save()'壓倒一切的問題。我假設這可能只是SO上的錯字,但以防萬一:'ManyToManyFields(First)'應該是單數ManyToManyField(First)' –
老實說,我迷失了。我試圖肯定沒有任何意義,但我仍然會用save方法編輯問題。 – naccode