2016-03-21 8 views
0

jlist(私は 'javaindex'メソッドが呼ばれるたびに生成されます)を別のビュー、つまりjavaresultビューに渡したいと思います。私はQuestionモデルからjlistを生成しています。Djangoのあるビューから別のビューにリストを渡します

def javaindex(request): 
    javapool = list(Question.objects.all()) 
    random.shuffle(javapool) 
    jlist = javapool[:10] 
    request.session['jlist'] = jlist 
    return render(request,'index.html',{'latest_question_list': jlist}) 

私の他のビューには、私はSOの検索となりrequest.session['jlist']を追加しましたが、それは私にエラー<Question: Question object> is not JSON serializableを与えている

def javaresult(request): 
    ch = [0] 
    correct = 0 
    jlist = request.session['jlist'] 
    for i in range(1,11): 
     s = request.POST.get(str(i)) 
     if s: 
      question, choice = s.split('-') 
      ch.append(choice) 
      if jlist[i].ans == ch[i]: 
       correct+=1 
    return HttpResponse(correct) 

です。

どうすればこの問題を解決できますか?ありがとう:)

答えて

1

質問オブジェクトのIDをセッションに保存し、もう一度2番目のビューでDBからオブジェクトを取得します。

def javaindex(request): 
    ... 
    request.session['jlist'] = [j.id for j in jlist] 
    ... 

def javaresult(request): 
    ... 
    jlist = Question.objects.filter(id__in=request.session['jlist']) 
    ... 
+0

コードを教えてください。 – deveshasha

+0

@deveshashaコード例が追加されました。 –

+0

ありがとう:)それは今働いた。ちょっとした問題ですが、結果ビューの 'jlist [i]'は範囲外です。それはなぜそうですか? – deveshasha

関連する問題