【发布时间】:2017-07-22 07:57:13
【问题描述】:
我有这样的 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 信号。 docs.djangoproject.com/en/1.10/ref/signals/#post-save
-
我试过了,没有任何改变
-
还有另一种方法。保存您的车型后,您可以更新评级..
标签: python django django-models django-admin django-signals