2011-04-14 39 views
1

這裏是我的代碼:型號IndexError()

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 

是否有任何possibilty導致此錯誤,比其他記錄由併發進程從數據庫中刪除?

+0

我認爲你的模型對象沒有記錄。這可能是另一種可能性 – 2011-04-14 12:39:55

+0

如果它沒有記錄如何queryset計數可以> 0? – synclabs 2011-04-16 12:26:24

回答

1

您的代碼沒有考慮過濾器沒有返回記錄的可能性。即使您使用qs.count()條件,您的返回值假定返回對象。也許你可能會考慮一個功能:

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

謝謝你的回覆。但我什麼都沒有回來。這個異常是由django庫引發的。我只是分配值。 – synclabs 2011-04-16 12:23:51