2012-07-09 126 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