django Aggregation: Summe dann Durchschnitt

Verwenden von Djangos ORM-Annotation () und / oder Aggregation (): Ich möchte anhand eines Kategoriefelds zusammenfassen und dann den Durchschnitt über die Kategoriewerte pro Datum bilden. Ich habe versucht, es mit zwei annotate () -Anweisungen zu tun, habe aber einen FieldError erhalten.

Ich mache das:

queryset1 = self.data.values('date', 'category').annotate(sum_for_field=Sum('category'))

Welche ein ValuesQuerySet-Objekt mit folgenden Werten ausgibt (also eine Summe für jeden Wert der Kategorie):

[{'category': 'apples', 'date': '2015-10-12', sum_for_field=2000},
 {'category': 'carrots', 'date': '2015-10-12', sum_for_field=5000},
 {'category': 'apples', 'date': '2015-10-13', sum_for_field=3000},
 {'category': 'carrots', 'date': '2015-10-13', sum_for_field=6000}, ...
]

Ich möchte dann das Feld sum_for_field für jedes Datum mitteln, um Folgendes auszugeben:

[ {'date': '2015-10-12', avg_final: 3500},
{'date': '2015-10-13', avg_final: 4500}, ...
]

Ich habe versucht, dies zu tun:

queryset2 = queryset1.values('date', 'sum_for_field')
result = queryset2.annotate(avg_final=Avg('sum_for_field'))

Aber ich habe diesen FieldError:

FieldError: FieldError: Cannot compute Avg('sum_for_field'): 'sum_for_field' is an aggregate

Antworten auf die Frage(4)

Ihre Antwort auf die Frage