使用Django&x27的Sumproduct;s聚集 问题: 是否可以使用来计算产品 背景

使用Django&x27的Sumproduct;s聚集 问题: 是否可以使用来计算产品 背景,django,django-models,aggregate,aggregation,Django,Django Models,Aggregate,Aggregation,我正在建模一个发票,它可以包含多个项目。发票和项目模型之间的多对多关系通过InvoiceItem中间表处理 通过将给定发票上每个项目的单价和数量的乘积相加,计算发票总金额-发票金额。下面是我目前用来完成这一任务的代码,但我想知道是否有更好的方法来处理这个问题 现行代码 是的,这是可能的,因为Django 1.1引入了聚合函数。以下是适用于您的模型的解决方案: def _get_amount_invoiced(self): self.invoiceitem_set.extra(sele

我正在建模一个发票,它可以包含多个项目。发票和项目模型之间的多对多关系通过InvoiceItem中间表处理

通过将给定发票上每个项目的
单价
数量
的乘积相加,计算发票总金额-
发票金额
。下面是我目前用来完成这一任务的代码,但我想知道是否有更好的方法来处理这个问题

现行代码
是的,这是可能的,因为Django 1.1引入了聚合函数。以下是适用于您的模型的解决方案:

 def _get_amount_invoiced(self):
     self.invoiceitem_set.extra(select=("item_total": "quantity * unit_price")
                                ).aggregate(total=Sum("item_total")["total"]

但是,强烈建议将item_total存储在数据库中,因为它可能会受到折扣、税收和其他更改的影响,使得每次计算都不可行,甚至不可能。

我无法复制,我不断得到“无法将关键字'item_total'解析到字段中”。:(
 def _get_amount_invoiced(self):
     self.invoiceitem_set.extra(select=("item_total": "quantity * unit_price")
                                ).aggregate(total=Sum("item_total")["total"]