私は、このような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 –
私は試しましたが、変更はありません –
別の方法があります。あなたの車のモデルを保存した後、あなたは評価を更新することができます.. –