如何在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)

我想在数量和费率之间进行乘法并将结果存储在数量中...

所以我做了这样的事情:

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

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

威廉·范昂塞姆

但是这里您已经有了实例,因此totalamount简单地是:

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

话虽这么说,如果Amount一直rate乘以Quantity,不如定义@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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章