在Django中从一个视图到另一个视图的通过列表

问题描述:

我想通过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

我该如何摆脱?谢谢:)

在会话中保存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