0

私はPHPではかなり些細なことですが、Pythonにはかなり慣れていません。データベースにユーザー テスト データを照会し、テンプレートに渡されるいくつかの key:values を含む文字列を作成するメソッドがあります。

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 に答える