我想将jlist
(我每次调用'javaindex'方法时生成)传递给另一个视图,即javaresult
视图。我正在从jlist
模型中生成Question
。
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
。
我如何摆脱这个?谢谢:))
答案 0 :(得分: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'])
...