在 Django 中注释 group by

问题描述

我正在尝试在 django 中执行与此等效的查询

SELECT SUM(quantity * price) from Sales GROUP BY date.

我的 Django 查询如下所示:

Sales.objects.values('date').annotate(total_sum=Sum('price * quantity'))

上面的一个抛出错误

无法将关键字“价格 * 数量”解析到字段中

然后我在检查这个 https://stackoverflow.com/a/18220269/12113049

后想出了另一个查询
Sales.objects.values('date').annotate(total_sum=Sum('price',field='price*quantity'))

不幸的是,这对我帮助不大。它给了我 SUM(price) GROUP BY date 而不是 SUM(quantity*price) GROUP BY date

如何在 django 中查询

解决方法

您应该使用 F expressions 对字段执行操作:

app:layout_behavior="@string/appbar_scrolling_view_behavior"

编辑:假设 from django.db.models import F Sales.objects.values('date').annotate(total_sum=Sum(F('price') * F('quantity'))) price 并且 DecimalFieldquantity(不同类型),您需要指定 { IntegerField 中的 {1}}:

output_field