我有一个函数可以将净价转换为总价,如下所示。taxRate是税值。例如23,8,5,0
def gross(netValue, taxRate: int, currencyPrecision=2):
if taxRate > 0:
return round(netValue * (100 + taxRate) / 100, currencyPrecision)
else:
return round(netValue, currencyPrecision)
在我的模型中,我有一个类,它是带有字段的订单项:净价格和税收ID。
class OrderPosition(models.Model):
posNumber = models.AutoField(auto_created=True, primary_key=True, editable=False, blank=False)
order = models.ForeignKey(OrderHeader, on_delete=models.PROTECT)
product = models.ForeignKey(Product, on_delete=models.PROTECT)
quantity = models.DecimalField(blank=False, max_digits=3, decimal_places=0)
netPrice = MoneyField(blank=False, max_digits=6, decimal_places=2, default=Money("0", "PLN"))
taxId = models.IntegerField(blank=False, default=0)
具有给定ID的整个订单的价值可以计算如下:
def getNetValue(self):
posList = OrderPosition.objects.filter(order_id=self.orderID)
if posList:
return str(posList.aggregate(netValue=Sum(F('quantity') * F('netPrice'),
output_field=MoneyField()))['netValue'])
else:
return "0"
问:我可以在查询中使用函数“gross()”来计算订单的总值吗?计算方法与计算净值类似。
我假设聚合函数是在数据库端执行的(在我的例子中是mySQL),并且我们只能使用在数据库和SQL级别可以理解的内容。
1条答案
按热度按时间wgmfuz8q1#
试试这个: