Если у меня есть агрегат, могу ли я получить среднее значение значений в запросе, не вычисляя его в памяти python?Как вычислить среднее значение совокупности в django
from django.db.models import F, Sum, FloatField, Avg
Model.objects.filter(...)\
.values('id')\
.annotate(subtotal=Sum(...math here...), output_field=FloatField())\
.annotate(total=Avg(F('subtotal'))) #this line throws a FieldError
Есть ли способ, чтобы получить Avg
из subtotal
значений в запросе? Это дает мне ошибку, что мне не разрешено вычислять Avg
на совокупности («subtotal
»), но я не могу заменить группу .values('id')
, потому что внутри операций .annotate(...math here...)
нет distributive через объекты Model
.
Большое спасибо, отлично работает. – Escher
У меня такая же проблема, но мне нужно усреднять по нескольким (уже) агрегированным полям. Что-то вроде '.aggregate (total = Avg (F ('subtotal_1'), F ('subtotal_2'), F ('subtotal_3')))', но он жалуется, что 'subtotal_1' - это совокупность ... как решить эту проблему ? [Вот аналогичный вопрос.] (Http://stackoverflow.com/questions/34911474/django-aggregation-sum-then-average) –