我试图将所有的decimalfields数字加在一起,形成模型内的总和
这是我的模型
class Ataskaita(models.Model):
class Meta:
verbose_name_plural = 'Ataskaitos'
bendrija = models.ForeignKey(Bendrija, on_delete=models.CASCADE,
related_name="ataskaita")
atlyginimas = models.DecimalField(max_digits=10, decimal_places=2, null=False, default=0)
sodra = models.DecimalField(max_digits=10, decimal_places=2, null=False, default=0)
vmi = models.DecimalField(max_digits=10, decimal_places=2, null=False, default=0)
pvm_saskaitos_kvitas = models.DecimalField(max_digits=10, decimal_places=2, null=False, default=0)
bankines_operacijos = models.DecimalField(max_digits=10, decimal_places=2, null=False, default=0)
sum = models.DecimalField(max_digits=10, decimal_places=2)
,我想把所有字段(atlyginimas, sodra, vmi, pvm_saskaitos_kvitas, bankines_operacijos)加在一起,这样我就有了它们的总和
我环顾了一下stackoverflow,我认为唯一的方法是创建一个方法,但我已经尝试过了,它不会像预期的那样工作
Django模型只是python类,所以像这样添加任意方法应该可以正常工作:
class Ataskaita(models.Model):
class Meta:
verbose_name_plural = 'Ataskaitos'
bendrija = models.ForeignKey(Bendrija, on_delete=models.CASCADE,
related_name="ataskaita")
atlyginimas = models.DecimalField(max_digits=10, decimal_places=2, null=False, default=0)
sodra = models.DecimalField(max_digits=10, decimal_places=2, null=False, default=0)
vmi = models.DecimalField(max_digits=10, decimal_places=2, null=False, default=0)
pvm_saskaitos_kvitas = models.DecimalField(max_digits=10, decimal_places=2, null=False, default=0)
bankines_operacijos = models.DecimalField(max_digits=10, decimal_places=2, null=False, default=0)
@property
def sum(self):
return sum([self.atlyginimas, self.sodra, self.vmi, self.pvm_saskaitos_kvitas, self.bankines_operacijos])
你可以像这样指示你的序列化器显示只读属性:
class Ataskaita(serializers.ModelSerializer):
sum = serializers.ReadOnlyField()
class Meta:
model = Ataskaita
fields = '__all__'
这样做符合你的要求吗?