モデルフィールドの合計を返さなければならないいくつかのモデルで作業しています。モデルのsaveメソッドをオーバーライドするか、合計を返すカスタムメソッドを作成する方が良いでしょうか。いずれのソリューションでもパフォーマンス上の問題はありますか?Djangoモデル、保存メソッドまたはカスタムメソッドのオーバーライドプロパティ
オプション1:saveメソッドをオーバーライドします。
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)
オプション2:カスタムメソッド
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])
賛否両論のおかげで素敵な説明。 – Andreas