Django 计算queryset中的分支数

Django 计算queryset中的分支数,django,Django,Django==3.2 在断点处,我有这样的查询集: <QuerySet [<UsingSemanticsLevelTwo: 2. Дубаец - 3. green_dubai_TR>, <UsingSemanticsLevelTwo: 2. Дубаец - 2. dubai_TR>, <UsingSemanticsLevelTwo: 1. Вас вызывает Дубай 1 - 4. dubai_COMP>]> 问题 我想计算查询集中

Django==3.2

在断点处,我有这样的查询集:

<QuerySet [<UsingSemanticsLevelTwo: 2. Дубаец - 3. green_dubai_TR>, <UsingSemanticsLevelTwo: 2. Дубаец - 2. dubai_TR>, <UsingSemanticsLevelTwo: 1. Вас вызывает Дубай 1 - 4. dubai_COMP>]>
问题

我想计算查询集中不同的分支

queryset.annotate(Count("branch"), distinct=True)
它爆炸了:

{TypeError}QuerySet.annotate() received non-expression(s): True.

您能帮助我吗?

distinct是
Count
的关键字参数,而不是
annotate
,因此您的查询应该是:

queryset.annotate(Count("branch", distinct=True))
而不是:

如果需要实际注释一个常量值,可以使用
表达式:

from django.db.models import Value


queryset.annotate(some_value=Value(True))
编辑:如果只想聚合数据,则需要使用而不是
注释
(注释将聚合分组依据的结果,而聚合将聚合所有行):


原谅但它返回一个查询集。我只想要一个数字——多少分支。也许我使用注释是徒劳的。你能帮我数数树枝吗?
queryset.annotate(Count("branch"), distinct=True)
from django.db.models import Value


queryset.annotate(some_value=Value(True))
queryset.aggregate(Count("branch", distinct=True))['branch__count']