如何使用 Django QuerySet 生成总和并显示在模板中?

How to generate a total sum with a Django QuerySet and display in a template?

我正在使用 annotate 和我的 Django 查询集来计算记录数。我将它与 filter 一起使用,我明白顺序会有所不同。

我的查询是:numcontestants = Contestant.objects.filter(assigned_team__id=urlid).annotate(num_contestants=Count('id'))

当我将 numcontestants 传递到我的模板并使用 {{ numcontestants }} 显示它时,我看到一个查询集,其中包含我要查看的每条记录。当我尝试:

{{ numcontestants.num_contestants }}我一无所获

我不想迭代 numcontestants 来获得计数,我的理解是 num_contestants 应该是一个整数。即便如此,迭代并没有给出我想要的结果,例如使用:

{% for x in numcontestants %} {{x.num_contestants}} {% endfor %}

输出 1 1 1 当我试图获得输出 3.

的东西时

生成和访问总计数的正确方法是什么?

为每条记录注释return一个数字,第一条记录可以得到num_contestants:

{{ numcontestants.0.num_contestants }}

如果你想获得多个queryset结果可以在你的quesyset

中使用.count()
numcontestants = Contestant.objects.filter(assigned_team__id=urlid).count()