这是我的模型:
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] 删除。
我来说两句