我在Django查询集上使用annotate:

class MyModel(models.Model):
   my_m2m = models.ManytoManyField()

my_qs = MyModel.objects.all().annotate(total_m2m=Count('my_m2m'))

这会产生预期的结果.例如:

>>> my_qs[0].total_m2m
>>> 3

如何使用aggregate来计算查询集中my_m2m的总数?例如.

>>> my_qs.aggregate_m2m
>>> 9

推荐答案

你可以总结一下,所以:

from django.db.models import Count, Sum


MyModel.objects.annotate(total_m2m=Count('my_m2m')).aggregate(
    total=Sum('total_m2m')
)

但在这里,立即汇总更有意义:

from django.db.models import Count


MyModel.objects.aggregate(
    total=Count('my_m2m')
)

Python相关问答推荐

用ctype构建指针链

将两个收件箱相连导致索引的列标题消失

Plotly Dash函数来切换图形参数-pPython

如何匹配3D圆柱体的轴和半径?

从 struct 类型创建MultiPolygon对象,并使用Polars列出[list[f64]列

将HLS纳入媒体包

Chatgpt API不断返回错误:404未能从API获取响应

如何在msgraph.GraphServiceClient上进行身份验证?

难以在Manim中正确定位对象

'discord.ext. commanders.cog没有属性监听器'

输出中带有南的亚麻神经网络

为什么默认情况下所有Python类都是可调用的?

NP.round解算数据后NP.unique

修复mypy错误-赋值中的类型不兼容(表达式具有类型xxx,变量具有类型yyy)

如何在python polars中停止otherate(),当使用when()表达式时?

"使用odbc_connect(raw)连接字符串登录失败;可用于pyodbc"

如何获取numpy数组的特定索引值?

将tdqm与cx.Oracle查询集成

使用Python更新字典中的值

如何根据一列的值有条件地 Select 前N个组,然后按两列分组?