agregación de django: suma y luego promedio

Usando el ORM annotate () y / o agregado () de django: quiero resumir basado en un campo de categoría y luego promediar los valores de categoría por fecha. Intenté hacerlo usando dos declaraciones annotate () pero obtuve un FieldError.

Estoy haciendo esto:

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

Lo que genera un objeto ValuesQuerySet con cosas como (una suma para cada valor de categoría):

[{'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}, ...
]

Luego quiero promediar el campo sum_for_field para cada fecha para generar algo como:

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

Intenté hacer esto:

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

Pero obtuve este FieldError:

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta