2016-03-21 97 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}) 

我的另一種觀點則

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) 

我搜索了SO,因此增加了request.session['jlist']但這是給我一個錯誤<Question: Question object> is not JSON serializable

我該如何擺脫?謝謝:)

回答

1

在會話中保存Question對象的ID,並在第二個視圖中再次從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

相關問題