django - 如何在 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
有谁知道如何做到这一点???
解决方案
但是在这里你已经有了实例,所以totalamount
很简单:
@receiver(pre_save, sender=Purchase)
def update_amount(sender, instance, *args, **kwargs):
instance.Amount = instance.rate * instance.Quantity
话虽这么说,如果Amount
总是乘以,最好定义 a ,因为这样可以避免数据重复,例如: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
推荐阅读
- arrays - 在 Laravel 5.6 中存储数组
- php - PayPal Sandbox API 的问题:SSL、CORS 和 CORB 错误
- java - 在 JDBC 或 MySQL 中执行所有并发未决查询后如何运行更新查询?
- javascript - ApolloServer 2.0 上下文和 GraphQL API 的公共/私有部分
- php - Sieve - 使用加密密码登录
- javascript - 设置具有相同 css 类的两个元素的值
- csv - 无法更改 es2csv cli 输出 csv 的分隔符
- javascript - Mousedown 事件不会在 select2 下拉菜单中触发
- hibernate - Spring Boot 2.0.4 和 WAS Liberty 事务 18.0.0.2 事务管理器问题
- java - ConstraintValidator 也适用于单个字段和集合