首页 > 解决方案 > 如何在 Django 模型中执行乘法?

问题描述

这是我的模型:

class Purchase(models.Model):
    Quantity    = models.PositiveIntegerField()
    rate        = models.DecimalField(max_digits=5,decimal_places=2)
    Amount      = models.DecimalField(max_digits=5,decimal_places=2)

我想在 Quantity 和 rate 之间执行乘法并将结果存储在 Amount ...

所以我做了这样的事情:

from django.db.models import F

@receiver(pre_save, sender=Purchase)
def update_amount(sender,instance,*args,**kwargs):
    totalamount = Purchase.objects.get(F('rate') * F('Quantity'))
    instance.Amount = totalamount

但它给了我这个错误:

'CombinedExpression' object is not iterable

有谁知道如何做到这一点???

标签: djangodjango-models

解决方案


但是在这里你已经有了实例,所以totalamount很简单:

@receiver(pre_save, sender=Purchase)
def update_amount(sender, instance, *args, **kwargs):
    instance.Amount = instance.rate * instance.Quantity

话虽这么说,如果Amount总是乘以,最好定义 a ,因为这样可以避免数据重复,例如:rateQuantity@property

class Purchase(models.Model):

    Quantity    = models.PositiveIntegerField()
    rate        = models.DecimalField(max_digits=5,decimal_places=2)

    def amount(self):
        return self.Quantity * self.rate

推荐阅读