如何将空查询集指定为非空查询集: [ ] 转换为 [<对象: hi>]

2 投票
3 回答
2912 浏览
提问于 2025-04-17 07:35

我遇到了一个问题,就是怎么判断一个对象是否为空……

这是我的代码:

这个值没有数据

>>> x = Booking.objects.filter(date_select='2011-12-3')
>>> print x
[]
>>> if x == None:
...  print 'none'
... 
>>> 

这个有数据:

>>> x = Booking.objects.filter(date_select='2011-12-2')
>>> print x
[<Booking: arab>, <Booking: arab>, <Booking: vvv>]
>>> if x == None:
...  print 'none'
... 
>>>

我从之前的问题中学到,[]None 是不一样的……

这是我想在代码中应用的算法:

if x has an empty queryset
 print empy
else
 print data

有没有人能帮我解决这个问题?谢谢……

3 个回答

0

尝试一下

x = Booking.objects.filter(date_select='2011-12-2')
if x.count() == 0:
    print "empty"
2

这个应该可以工作

if not x:
    print "Empty"
else:
    print data`
9

使用 exists()

如果查询结果中有数据,就返回True;如果没有数据,就返回False。这个方法会尽量以最简单和最快的方式来执行查询,但实际上执行的查询几乎是一样的。这意味着调用QuerySet.exists()比使用bool(some_query_set)要快,但差别并不大。

if my_queryset.exists():
    print "QuerySet has Data"
else:
    print "QuerySet is empty"

撰写回答