starten durch den Monat zu extrahieren und alle Werte
from django.db import connection
select = {'month': connection.ops.date_trunc_sql('month', 'created')}
qs = Contract.objects.extra(select=select).values('month').annotate(my_total=Sum('proposal__price'))
Jetzt haben wir eine Funktion Gruppe verwenden können dict Schlüssel wie folgt:
from itertools import groupby
from operator import attrgetter
get_y = attrgetter('month')
from collections import defaultdict, Counter
def solve(dataset, group_by_key, sum_value_keys):
dic = defaultdict(Counter)
for item in dataset:
key = item[group_by_key]
vals = {k:item[k] for k in sum_value_keys}
dic[key].update(vals)
return dic
es zu Ihrem queryset des Nehmen neu my_total
kommentierten, gruppiert nach month
:
solved = solve(qs, 'month', ['my_total'])
Und Sie Summen werden nach Monat gruppiert (Monat ein Datetime-Objekt sein kann, Ihre Bedürfnisse ändern manipulieren):
for i in solved: print(i, ":", solved[i]['my_total'])
>>> datetime.datetime(2015, 9, 1, 0, 0, tzinfo=<UTC>) : 67614.23
>>> datetime.datetime(2015, 1, 1, 0, 0, tzinfo=<UTC>) : 54792.39
Jetzt können Sie diese Werte extrahieren :)
Mögliches Duplikat von [So gruppieren Sie nach UND-Aggregat mit Django] (http://stackoverflow.com/questions/13403609/how-to-group-by-and-aggregate-with-django) –
Mögliches Duplikat von [ Django: Gruppieren nach Datum (Tag, Monat, Jahr)] (http://stackoverflow.com/questions/8746014/django-group-by-date-day-month-year) – tback