agregação de django: soma e média
Usando anotação ORM do django () e / ou agregado (): quero resumir com base em um campo de categoria e, em seguida, média sobre os valores de categoria por data. Tentei fazê-lo usando duas instruções annotate (), mas obtive um FieldError.
Eu estou fazendo isto:
queryset1 = self.data.values('date', 'category').annotate(sum_for_field=Sum('category'))
Que gera um objeto ValuesQuerySet com coisas como (portanto, uma soma para cada valor da categoria):
[{'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}, ...
]
Quero, então, calcular a média do campo sum_for_field para cada data para gerar algo como:
[ {'date': '2015-10-12', avg_final: 3500},
{'date': '2015-10-13', avg_final: 4500}, ...
]
Eu tentei fazer isso:
queryset2 = queryset1.values('date', 'sum_for_field')
result = queryset2.annotate(avg_final=Avg('sum_for_field'))
Mas eu tenho esse FieldError:
FieldError: FieldError: Cannot compute Avg('sum_for_field'): 'sum_for_field' is an aggregate