Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在django中注释group by_Django_Group By_Django Annotate - Fatal编程技术网

在django中注释group by

在django中注释group by,django,group-by,django-annotate,Django,Group By,Django Annotate,我尝试在django中执行一个查询,该查询相当于: SELECT SUM(quantity * price) from Sales GROUP BY date. 我的django查询如下所示: Sales.objects.values('date').annotate(total_sum=Sum('price * quantity')) 上面的一个抛出错误: 无法将关键字“价格*数量”解析为字段 然后,在检查完这个之后,我提出了另一个问题 不幸的是,这对我帮助不大。它给我提供了按日期分组的S

我尝试在django中执行一个查询,该查询相当于:

SELECT SUM(quantity * price) from Sales GROUP BY date.
我的django查询如下所示:

Sales.objects.values('date').annotate(total_sum=Sum('price * quantity'))
上面的一个抛出错误:

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

然后,在检查完这个之后,我提出了另一个问题

不幸的是,这对我帮助不大。它给我提供了按日期分组的
SUM(price)
,而不是按日期分组的
SUM(quantity*price)

如何在django中查询此信息?

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

from django.db.models import F

Sales.objects.values('date').annotate(total_sum=Sum(F('price') * F('quantity')))
编辑:假设
价格
是一个
分码字段
数量
是一个
整数字段
(不同类型),您需要在
总和
中指定
输出字段

from django.db.models import DecimalField, F

Sales.objects.values('date').annotate(total_sum=Sum(F('price') * F('quantity'), output_field=DecimalField()))

在我的例子中,我必须添加输出字段:Sales.objects.values('date')。注释(total_sum=sum(F('price')*F('quantity'),output_field=FloatField())。这将返回空查询集。@MaruthiEranki认为您的字段类型是经过编辑的。对此深表歉意。我将输出字段设置为FloatField。现在的问题是,django查询并没有返回任何查询集。虽然我有数据。@MaruthiEranki您确定使用了正确的变量等吗。?或者使用适当的数据库?尝试直接打印查询集:
print(Sales.objects.values('date')。annotate(…)
Yes,如果我做Sum(F('price')),那么它将返回集合。只有当我乘以F('price')*F('quantity')时,它才返回空集。我不知道到底是什么问题。
from django.db.models import DecimalField, F

Sales.objects.values('date').annotate(total_sum=Sum(F('price') * F('quantity'), output_field=DecimalField()))