2012-05-10 3 views
0

Надеюсь, простой вопрос. У меня есть набор запросов, и каждое действие имеет значение time_estimate. Я хочу, чтобы получить среднее time_estimate во всех действиях в QuerySet таким образом, что это возвращает среднее:Добавить агрегацию в набор запросов django

{{ actions.avg_time_estimate }} 

Я попытался

actions.avg_time_estimate = actions.aggregate(Avg('time_estimate')) 

, но это назначение словаря в actions.avg_time_estimate, то есть Я получаю среднее значение:

{{ actions.avg_time_estimate.effort__avg }} 

Каков правильный способ вывести среднее значение в запрос? Я также хочу сохранить фактический список действий в запросе.

+0

Может ли это быть сделано путем добавления в совокупности в качестве дополнительных к QuerySet? (см. [Django Docs] (https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.extra)) – jvc26

ответ

0

Постарайся actions = actions.aggregate(avg_time_estimate=Avg('time_estimate'))

+0

Это дает мне среднее значение, но затем Я теряю результаты запроса (вопрос отредактирован выше) –

+0

Это два отдельных запроса на уровне БД в любом случае, если вы хотите получить среднее значение для всего в наборе запросов. Альтернативно, поскольку вы хотите получить все результаты, вы можете просто вычислить среднее значение, как только получите результаты, чтобы избежать второго запроса. –

Смежные вопросы