Pracuję z niektórymi modelami, które muszą zwrócić sumę pól modelu. Czy lepiej zastąpić metodę zapisu w modelu lub po prostu stworzyć niestandardową metodę, która zwraca sumę. Czy są jakieś problemy z wydajnością z jednym z rozwiązań?Model Django, Przesłanianie metody składowania lub metody niestandardowej za pomocą właściwości
Opcja 1: Zastąpienie metody zapisu.
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)
Opcja 2: Metoda klienta
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])
Dzięki, ładne wyjaśnienie plusów i minusów. – Andreas