Ich arbeite mit einigen Modellen, die eine Summe von Modellfeldern zurückgeben müssen. Ist es besser, die Speichermethode für das Modell zu überschreiben oder einfach eine benutzerdefinierte Methode zu erstellen, die die Summe zurückgibt? Gibt es Leistungsprobleme mit einer der beiden Lösungen?Django-Modell, Überschreiben der Speichermethode oder der benutzerdefinierten Methode mit der Eigenschaft
Option 1: Überschreiben der Speichermethode.
class SomeModel(models.Model):
integer1 = models.IntegerField()
integer2 = models.IntegerField()
integer3 = models.IntegerField()
sum_integers = models.IntegerField()
def save(self, *args, **kwargs):
self.sum_integers = sum(
[self.integer1, self.integer2, self.integer3])
self.sum_integers.save()
return super(SomeModel, self).save(*args, **kwargs)
Option 2: Benutzerdefinierte Methode
class SomeModel(models.Model):
integer1 = models.IntegerField()
integer2 = models.IntegerField()
integer3 = models.IntegerField()
@property
def sum_integers(self):
return sum([self.integer1, self.integer2, self.integer3])
Danke, schöne Erklärung der Vor- und Nachteile. – Andreas