多条件Django模板



我目前正在尝试使用(3)个条件,这些条件基于一个名为Tld的表中的信息。

视图.py

#check if current auth. user has ENTERED any domains
User_Tld_Entered = Tld.objects.filter(FKtoClient_id=request.user)
#check if current auth. user has any UNAUTHORIZED domains
User_No_Auth_Tld = Tld.objects.filter(FKtoClient_id=request.user,auth=0)
#check if current auth. user has any AUTHORIZED domains
User_Auth_Tld = Tld.objects.filter(FKtoClient_id=request.user,auth=1)

模板.py

{% if User_Tld_Entered == 0  %} <!-- show ADD TLD form -->
    <h1>show ADD TLD form</h1>
{% elif User_No_Auth_Tld > 0 %} <!--display unauth domains, with auth link-->
    <h1>display unauth domains, with auth link</h1>
        {% for unauth_domain in User_No_Auth_Tld %}
            {{ unauth_domain }}
        {% endfor %}
{% elif User_Auth_Tld > 0 %} <!--display auth domains, with scan form-->
    <h1>show diff form</h1>
{% endif %}

当我访问我的模板时,它显示<h1>display unauth domains, with auth link</h1>,但不显示for()中的任何内容。

这很奇怪,因为它应该显示<h1>show ADD TLD form</h1>的原始if()语句值,因为Tld表中没有数据,所以它会落入elif User_No_Auth_Tld > 0语句中似乎很奇怪。

我的观点有什么不正确的地方吗?

谢谢。

User_Tld_EnteredUser_No_Auth_TldUser_Auth_Tld是查询集,而不是整数。要测试它们是否为空,您应该使用类似的代码

{% if not User_Tld_Entered %}
     ...
{% elif User_No_Auth_Tld %}
     ...
{% elif User_Auth_Tld %}
     ...
{% endif %}

您尚未在任何查询集上调用.count()。您的比较只是针对查询对象进行的。查询对象本身总是大于0,即使查询的实际结果是空的。

最新更新