Получение SUM для каждого уникального поля в запросе Django
У меня есть следующие табличные отношения.
Мне нужна SUM общей_стоимости из Sales_Transaction для каждого имени_партии из таблицы Party. Стороны имеют 1:M отношение с продажами, а продажи имеют 1:M отношение с Sales_Transction.
Я попробовал этот запрос, но он возвращает сумму для всех сторон:
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 Query?
Вы можете .annotate(…) [Django-doc] объекты Party с:
from django.db.models import Sum
Party.objects.annotate(
sales=Sum('sales__salestransaction__total_cost')
)
Объекты Party, возникающие в результате этого QuerySet будут иметь дополнительный атрибут sales с общей суммой продаж для данного Party.
