我有這樣的Django模型:Django模型覆蓋保存和相關對象的新字段值
class Car(models.Model):
rating = models.PositiveIntegerField(
default=0,
verbose_name=_('Rating'),
)
class ReportInfo(models.Model):
car = models.ForeignKey(
Car,
related_name='car_info',
verbose_name='Report',
)
,我需要形成評價我的車實例包括從報告中的信息,以這樣的方式:
def save(self, *args, **kwargs):
rating = 0
for item in self.car_info.all():
rating += 10
self.rating = rating
super(Car, self).save(*args, **kwargs)
因此,我需要獲取我的汽車的所有報告,然後從報告中獲取一些其他數據,然後將評分保存到該字段中。但是,self.car_info.all()
返回我舊數據。這意味着下一個:當我點擊保存按鈕在新車的管理頁面時,我的代碼保存方法不能訪問真實的報告,因爲它們還沒有創建。
你明白嗎?我能做什麼?
你可以使用這個Django信號。 https://docs.djangoproject.com/en/1.10/ref/signals/#post-save –
我試過了,沒有任何改變 –
還有另一種方法。保存您的車型後,您可以更新評級.. –