是否有Django函数来计算甚至在None对象上的对象?

时间:2014-06-05 17:42:40

标签: python django

是否有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

谢谢!

2 个答案:

答案 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