2012-07-09 82 views
2

我有以下幾點:Django模型篩選

def foo(self): 
    print "Test" 
    scores = BasicScore.objects.filter(event__id=self.id).order_by('score_date')[0:1] 
    print scores 
    #return s 
    #return Score.objects.all().order_by('start_date')[:1] 
    return scores 

在我的模板:

event.foo.0.value 

這將很好地工作,我將能夠使用BasicScore類。

但是我以前有: 返回得分[0]

但我在日誌中得到這個:

Test 

[] 

和異常:

Exception Type: IndexError 
Exception Value:  

list index out of range 

Exception Location: /Library/Python/2.7/site-packages/django/db/models/query.py in __getitem__, line 207 
Python Executable: /usr/bin/python 

我是對於Django/Python來說一點點新東西,但爲什麼一個列表成功返回,但訪問[0]最終會因訪問一個空集合而出錯?

+0

你似乎在談論代碼的兩個單獨修訂(「以前我有」)。顯示一段代碼,並清楚地解釋它看起來有什麼問題。 – 2012-07-09 02:02:11

回答

1

列表[]不是一個列表,它是一個零的列表,並且scores[0]應該引發一個IndexError

+0

當我返回返回分數,並訪問元素0作爲event.foo.0.value 我得到的東西在模板中打印。 – Kunal 2012-07-09 02:16:48

+0

當然,所以當我有以下幾點: 回報分數 我可以在我的Django的模板訪問成績作爲 event.foo.0.value ,它會工作。 然而,當我回到剛: 返回得分[0] 它吹起來,給我的指標異常。 – Kunal 2012-07-09 02:31:06

+0

嘗試更改'scores = BasicScore ...'到'scores = list(BasicScore ...)' – 2012-07-09 02:37:14