0

我正在为一个在 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

任何有关最佳方法的帮助将不胜感激。谢谢

4

2 回答 2

4

您不需要计数变量。

results.append([{'title': title, 'finished': test.grade_date_time, 'grade': test.test_grade}])

list.append(x)操作无论如何都会将一个项目添加到列表的末尾。

于 2013-04-07T16:33:24.230 回答
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})
于 2013-04-07T16:35:39.117 回答