为 Django 查询中的每个唯一字段获取 SUM
Getting SUM for each unique fields in Django Query
我有以下 table 关系。
我想要来自 Sales_Transaction 的 total_cost 的 SUM 用于党 table 的每个 party_name。双方与销售有 1:M 关系,销售与 Sales_Transction 有 1:M 关系。
我试过这个查询,但它 returns 各方的总和:
Party.objects.aggregate(sales=Sum('sales__salestransaction__total_cost'))
这类似于这个简单的查询:
SalesTransaction.objects.aggregate(sales=Sum('total_cost'))
我想要这样的输出:
| Party Name | Total Purchase |
-----------------------------
|Party 1 | total_cost (calculated form Sales Transaction)
|Party 2 | total_cost (calculated form Sales Transaction)
如何在 Django 查询中获得这些结果?
您可以 .annotate(…)
[Django-doc] Party
个对象:
from django.db.models import Sum
Party.objects.<strong>annotate(</strong>
sales=Sum('sales__salestransaction__total_cost')
<strong>)</strong>
由此 QuerySet
产生的 Party
对象将有一个额外的属性 sales
,其中包含该 Party
的总销售额。
我有以下 table 关系。
我想要来自 Sales_Transaction 的 total_cost 的 SUM 用于党 table 的每个 party_name。双方与销售有 1:M 关系,销售与 Sales_Transction 有 1:M 关系。
我试过这个查询,但它 returns 各方的总和:
Party.objects.aggregate(sales=Sum('sales__salestransaction__total_cost'))
这类似于这个简单的查询:
SalesTransaction.objects.aggregate(sales=Sum('total_cost'))
我想要这样的输出:
| Party Name | Total Purchase |
-----------------------------
|Party 1 | total_cost (calculated form Sales Transaction)
|Party 2 | total_cost (calculated form Sales Transaction)
如何在 Django 查询中获得这些结果?
您可以 .annotate(…)
[Django-doc] Party
个对象:
from django.db.models import Sum
Party.objects.<strong>annotate(</strong>
sales=Sum('sales__salestransaction__total_cost')
<strong>)</strong>
由此 QuerySet
产生的 Party
对象将有一个额外的属性 sales
,其中包含该 Party
的总销售额。