是否有Django内置函数返回查询集中的项目数,如果对象为None则返回0?
我的期望:
thefunction([obj1, obj2])
>>> 2
obj1 = None
thefunction(obj1)
>>> 0
我尝试了len()
python函数和count()
Django方法,但它们不适用于None
个对象(我理解这种行为)。
如果没有这样的方法,我会自己写,不想重新发明轮子。
编辑:我是自己写的,但我仍然想知道(学习)这个函数是否存在于Python中:)def len_none(iterable):
''' Return the len of an object, and 0 if object is None or empty '''
if iterable: # object exists and is not empty
return len(iterable)
else:
return 0
谢谢!
答案 0 :(得分:1)
你可以自己写一下:
def my_count(var):
try:
return count(var)
except TypeError:
return 0
答案 1 :(得分:1)
如果查询集上的len
为空,则会返回0
。对于空的查询集,查询集不会返回None
。例如,如果我有5
张图片:
>>> len(Images.objects.none()) == 0
True
>>> len(Images.objects.all()) == 5
True
我认为没有什么可以按照您的要求进行特定的操作,但有很多方法可以实现。这是一个:
>>> one = [1, 2, 3]
>>> two = None
>>> len(one or [])
3
>>> len(two or [])
0