Django and Aggregate: Sum of distinct values?

John Magistr picture John Magistr · Dec 6, 2010 · Viewed 18.7k times · Source

I am trying to do a django aggregate function, but am unable to produce the desired result.

What I've got:

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

Desired result:

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

I need to Sum the 'amount' fields that have the same category__name.

Answer

Jordan Reiter picture Jordan Reiter · Dec 6, 2010

From 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'))