我目前正在尝试使用(3)基于名为Tld
的表格中的信息的条件。
views.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)
templates.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()
中的任何内容。
这很奇怪,因为它应该显示原始的if()
语句值<h1>show ADD TLD form</h1>
,因为Tld
表中没有数据,看起来很奇怪它会落入elif User_No_Auth_Tld > 0
{1}}陈述。
我的views.py变量是不正确的?
谢谢。
答案 0 :(得分:2)
User_Tld_Entered
,User_No_Auth_Tld
和User_Auth_Tld
是查询集,而不是整数。要测试它们是否为空,您应该使用类似
{% if not User_Tld_Entered %}
...
{% elif User_No_Auth_Tld %}
...
{% elif User_Auth_Tld %}
...
{% endif %}
答案 1 :(得分:0)
您尚未在任何查询集上调用.count()
。您的比较只是针对查询对象进行的。查询对象本身始终大于0,即使查询的实际结果为空。