计算Django模板中2个查询集的深度

计算Django模板中2个查询集的深度,django,Django,有没有办法在Django模板中对通过FK/M2M连接的第二个深度查询集进行计数?比如说, A型为FK型至B型,B型为M2M型至C型 {% for C in Cs %} {% for B in C %) {% if B.A.all.count >= 2 %} B Has multiple A's! {% else %} B only has 1 A! {% endif %} {% endfor %} {% end

有没有办法在Django模板中对通过FK/M2M连接的第二个深度查询集进行计数?比如说,

A型为FK型至B型,B型为M2M型至C型

    {% for C in Cs %}
       {% for B in C %)
         {% if B.A.all.count >= 2 %} B Has multiple A's!
         {% else %} B only has 1 A! {% endif %}
       {% endfor %}
    {% endfor %}
基本上,我想计算B中A的数量,如果是2个或更多,只显示“Multiple”,因为实际列出它们会破坏我的模板。但我似乎无法让它发挥作用。同时,下面的对我也有用:

    {% for C in Cs %}
         {% if C.B.all.count >= 2 %} C has multiple B's!
         {% else %} C only has 1 B! {% endif %}
    {% endfor %}

我只是不能让它再深入一点。有什么帮助吗?我必须在视图中执行此操作吗?

您应该在views.py中计算并以dict格式发送到您的页面

count = B.A.all().count() 
return render(request, 'page.html', {'count':count})

但如果您坚持使用模板,请尝试:
{%if B.A.count>=2%}
不需要“all”

这不应该是
B.A\u set.count
?但尽管如此,模板不是实现业务逻辑的地方,您需要在视图中这样做。有没有资源可以让我了解如何在视图中放置这种逻辑?但是我需要计算每个B的“a”的数量,我通过{%for%}循环显示,所以在视图中只计算一次是不可行的。我如何计算每一个人的数量?我尝试了{%if%}代码,不幸的是它不起作用。