【问题标题】:Django Dynamically Calculate AverageDjango 动态计算平均值
【发布时间】:2021-12-31 07:06:11
【问题描述】:

我的模型中有多个字段,我需要仅删除用户输入的列的平均值 可能是

我怎样才能动态地做到这一点?

我知道我能做到

mean = results.aggregate(Avg("student_score"))

这是一个,我要动态添加多个Avg语句

我也尝试制作一个循环来获取所有名称并一一添加用户提供的所有字段

例如 - 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 数据库

【问题讨论】:

  • 请分享您在哪里进行平均计算的代码和您的模型。

标签: django django-models django-queryset


【解决方案1】:

从对象列表中聚合返回单个结果。如果您需要以下多个结果,则需要注释,

YourModel.objects.values("YOUR GROUP BY VALUES HERE").annotate(Avg('students'), Avg('playtime'), Avg('grade'), Avg('sales')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-09
    • 2015-05-03
    • 2022-11-26
    • 2018-07-19
    • 1970-01-01
    • 2013-01-14
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多