汇总具有相同字段值的查询项

我的一个查询集返回具有多个字段的项目列表:

<QuerySet [{'name': 'John','products': 4},{'name': 'John','products': 6},{'name': 'Sam','products': 7},...]>

对于具有相同Sum()字段的元素,我该如何汇总这些数据以得到products值的name组合,以避免在查询集中重复,因此我将得到一些东西像这样:

<QuerySet [{'name': 'John','products': 10},...]>

我知道应该使用.annotate().aggregate()查询来完成此操作,但我不知道该怎么做。

a434637464 回答:汇总具有相同字段值的查询项

您需要的是annotate,您可以执行以下操作:

from django.db.models import Sum

your_queryset = YourModel.objects.annotate(total_products=Sum('products')).values_list('name','total_products')

您可以通过查看docs

了解更多信息 ,

您可以使用以下方法构造此类查询集:

from django.db.models import Sum

Model.objects.values('name').annotate(
    sum_products=Sum('products')
).order_by('name')

.order_by(..)是强制Django使用GROUP BY子句所必需的。

本文链接:https://www.f2er.com/3122579.html

大家都在问