我正在努力解决一个漂亮的菜鸟问题,这在PHP中非常简单,但我对Python很新。我有一个方法,在数据库中查询用户测试数据,然后构建一个字符串,其中包含几个键:将传递给模板的值。
def getTests(self, id):
results = []
count = 0
tests = TestAttempts.objects.all().filter(user_id=id)
for test in tests:
title = self.getCourseName(test.test_id)
results[count].append([{'title': title, 'finished': test.grade_date_time, 'grade': test.test_grade}])
count += 1
return results
我希望制作一个多级列表,我可以在模板中循环显示测试标题,完成日期和成绩。
我收到以下错误:
list index out of range
Request Method: GET
Request URL: http://127.0.0.1:8000/dash/history/
Django Version: 1.4.3
Exception Type: IndexError
Exception Value:
list index out of range
对于最佳方法的任何帮助将不胜感激。 感谢
答案 0 :(得分:4)
您不需要计数变量。
results.append([{'title': title, 'finished': test.grade_date_time, 'grade': test.test_grade}])
list.append(x)操作无论如何都会在列表的末尾添加一个项目。
答案 1 :(得分:0)
而不是使用count
results[count].append([{'title': title, 'finished': test.grade_date_time, 'grade': test.test_grade}])
您应该直接调用append
方法:
results[count].append([{'title': title, 'finished': test.grade_date_time, 'grade': test.test_grade}])
此外,您还要附加包含单个字典的列表。除非你想要做的是extend
通过将每个字典添加到列表中的结果(在示例中没有发生),这可能是不必要的:
results[count].append({'title': title, 'finished': test.grade_date_time, 'grade': test.test_grade})