2010-12-06 73 views
7

我想做一個Django聚合函數,但無法產生所需的結果。Django和Aggregate:不同值的總和?

我有什麼:

income_posts.values_list('category__name','amount') 
[(u'Donation', Decimal("2000.00")), (u'Paycheck', Decimal("1200.00")), (u'Donation', Decimal("1000.00"))] 

期望的結果:

[(u'Donation', Decimal("3000.00")), (u'Paycheck', Decimal("1200.00))] 

我需要總結的是具有相同category__name的 '量' 領域。

回答

14

this answer for a related question

from django.db.models import Sum 
income_posts.values('category__name').order_by('category__name').annotate(total=Sum('amount')) 
+0

相關文章:http://docs.djangoproject.com/en/dev/topics/db/aggregation/ – 2010-12-06 22:36:40

2

如果您對Postgres的,你可以使用django-pg-utilspackage的不同值的總和。

from pg_utils import DistinctSum 
income_posts.annotate(total=DistinctSum('amount')