Django Динамическое вычисление среднего значения
В моей модели несколько полей, и мне нужно вывести среднее значение только из тех столбцов, которые вводит пользователь. Может быть
Как я могу сделать это динамически?
Я знаю, что могу сделать
mean = results.aggregate(Avg("student_score"))
Это один, я хочу динамически добавить несколько утверждений Avg
Я также попробовал сделать цикл, чтобы получить все имена и добавить все поля, указанные пользователем, по одному
eg - Avg('students'), Avg('playtime'), Avg('grade'), Avg('sales')
Но я получаю
QuerySet.aggregate() received non-expression(s): <class 'django.db.models.aggregates.Avg'>('students'), <class 'django.db.models.aggregates.Avg'>('sales').
Я даже пробовал сырой запрос, но он требует уникальный ID, из-за чего он не работает. Есть идеи по обходному пути?
Я использую MySQL DB
Aggregate возвращает один результат из списка объектов. Если вам нужно получить несколько результатов, например,
, вам нужно сделать аннотацию.YourModel.objects.values("YOUR GROUP BY VALUES HERE").annotate(Avg('students'), Avg('playtime'), Avg('grade'), Avg('sales')