Я пытаюсь создать полудинамическую статистическую функцию, которая будет возвращать суммы всех полей в списке. Предполагается, что выполнение get_query_set () вернет отфильтрованный запрос, который содержит все поля в списке и некоторые другие, которые могут не очень хорошо работать с агрегатом Sum (поля даты, поля символов, внешние ключи и т. Д.)
Лучшие примеры, которые я до сих пор приводил, приведены ниже, это в основном вопрос по питону с использованием Django, хотя мой Python-Fu еще не самый сильный ...
Работает
qs = cl.get_query_set().aggregate(Sum('permits_submitted'), Sum('permits_pulled'), Sum('permits_posted'))
возвращение:
{'permits_pulled__sum': 5772, 'permits_posted__sum': 6723, 'permits_submitted__sum': 7276}
не работает
qs = cl.get_query_set().aggregate(Sum('permits_submitted')).aggregate(Sum('permits_pulled'))
возврат: ошибка
qs = cl.get_query_set().aggregate(Sum('permits_submitted', 'permits_pulled', Sum('permits_posted'))
возврат: ошибка
Не работает - представляет идею
tuple = (
'permits_submitted',
'permits_pulled',
'permits_posted',
)
qs = cl.get_query_set()
for field in tuple:
qs.aggregate(Sum(field))
возврат: ошибка
qs = cl.get_query_set()
qs.aggregate(*[Sum(field) for field in tuple])
возврат:
[<permit_runner: User's report for 2010-02-18>, <permit_runner: User's report for 2010-02-19>, '...(remaining elements truncated)...']
(аналогично возврату без агрегирования)
РАБОТА
qs = cl.get_query_set()
qs = qs.aggregate(*[Sum(field) for field in tuple])
пропустил определение qs = при добавлении агрегации - помогает сделать перерыв на несколько минут и выглядеть свежо