Ich habe so Django Modelle:Modelle Django Überschreibung speichern und neuen Feldwert von verwandten Objekten
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',
)
Und ich brauche aus Berichten Bewertung für mein Auto Instanzen einschließlich Informationen zu bilden, in einer solchen Art und Weise:
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)
Also, ich muss alle Berichte von meinem Auto bekommen, dann einige andere Daten aus dem Bericht holen und dann Rating in das Feld speichern. Aber, self.car_info.all()
gibt mir alte Daten zurück. Das heißt weiter: Wenn ich auf der Admin-Seite eines neuen Autos auf Speichern klicke, hat mein Code in der Speichermethode keinen Zugriff auf echte Berichte, da sie noch nicht erstellt wurden.
Verstehst du? Was kann ich tun?
können Sie dafür Django-Signale verwenden. https://docs.djangoproject.com/de/1.10/ref/signals/#post-save –
Ich habe versucht, nichts geändert –
Es gibt einen anderen Weg. Nach dem Speichern Ihres Automodells können Sie die Bewertung aktualisieren. –