检查count()后的Model IndexError

时间:2011-04-14 12:37:56

标签: python django django-models

这是我的代码:

    qs = MyModel.objects.filter(blah = blah)
    if qs.count() > 0:
        a = qs[0].value

File "/home/libs/django/db/models/query.py", line 189, in __getitem__
   return list(qs)[0]

IndexError: list index out of range

除了通过并发进程从数据库中删除记录之外,是否有可能导致此错误?

1 个答案:

答案 0 :(得分:1)

您的代码未考虑过滤器未返回任何记录的可能性。即使您使用qs.count()条件,您的返回值也会假定返回了对象。也许你可以考虑一个功能:

def myquery():
    qs = MyModel.objects.filter(blah = blah)
    try:
        return qs[0].value
    except IndexError:
        return None  # or raise an exception