Model alanlarının toplamını döndürmesi gereken bazı modellerle çalışıyorum. Modeldeki kaydetme yöntemini geçersiz kılmak veya sadece toplamı döndüren özel bir yöntem oluşturmak daha iyidir. Çözümlerden herhangi biriyle ilgili performans sorunu var mı?Django modeli, Özellik yöntemiyle kaydetme yöntemini veya özel yöntemi geçersiz kılma
Seçenek 1: Kaydetme yöntemini geçersiz kılma.
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)
Seçenek 2: Özel yöntemi yanıt, sum_integers kullanacağız şekilde bağlıdır
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])
Teşekkürler, artıları ve eksileri hakkında güzel bir açıklama. – Andreas