如何检查django对象过滤器得到的东西

时间:2015-02-05 01:39:37

标签: python django

这是我的代码

        for add in Address.objects.filter(city_id='112'):
            print add
            if add:
                print 'ok,I got something'
            else:
                print 'nothing found'

当它过滤somrthing时,它将打印:

Address object 
ok.Igot something

但是当它没有过滤某些东西时,

print add没有显示任何内容,也没有打印'nothing found'

我想问一下如何检查Address.objects.filter()获取对象

2 个答案:

答案 0 :(得分:3)

在布尔上下文中,如果查询集不为空,则返回True并且False未找到任何内容:

address_list = Address.objects.filter(city_id='112')
if address_list:
    print 'ok,I got something'
    for address in address_list:
        print address
else:
    print 'nothing found'

如果您在模板中使用queryset,则{% for %} ... {% empty %}模板标记可以为您提供帮助:

<ul>
    {% for address in address_list %}
        <li>{{ address }}</li>
    {% empty %}
        <li>Nothing found</li>
    {% endfor %}
</ul>

答案 1 :(得分:0)

Address.objects.filter(city_id='112')返回一个空数组时,将完全跳过for循环。你的if在那个循环中,所以当什么都没有返回时,根本就没有其他代码被击中。