我有2个表的问答。2个表有答案栏。我想将问题表答案列与答案表答案列进行比较,并使用会话显示结果。请指导我解决这个问题。
我将答案和用户答案的问题保存到数据库中。
def questions(request):
if request.method == 'POST':
form = QuestionsForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'saved successfully')
return HttpResponseRedirect('questions')
else:
messages.error(request, 'not saved')
return HttpResponseRedirect('questions')
else:
form = QuestionsForm()
return render(request, 'questions.html', {'form':form})
def answer(request):
if request.method=="POST":
question_ans = request.POST.get('answer', '')
question = request.POST.get('question', '')
print(f'ans: {question_ans}, ques: {question}', flush=True)
ques = Questions.objects.get(question=question)
if ques is not None:
question_ans1 = Answer(answer=question_ans, question=ques)
question_ans1.save()
return render(request, 'answer.html')
else:
return render(request, 'report.html')
else:
return render(request, 'report.html')
def result(request):
if request.method=="POST":
user_ans = Answers.objects.get(answer=answer)
ques_ans = Questions.objects.get(answer=answer)
result = 0
if ques_ans == user_ans:
reslut +=1
else:
result -=0.33
return render(request, 'result.html', {'result': result})
else:
return render(request, 'result.html')
model.py:
class Questions(models.Model):
qs_no = models.IntegerField(default=None)
question = models.TextField(max_length=500)
option_a = models.CharField(max_length=100)
option_b = models.CharField(max_length=100)
option_c = models.CharField(max_length=100)
option_d = models.CharField(max_length=100)
ans = models.CharField(null=True, max_length=50)
class Answer(models.Model):
question = models.ForeignKey(Questions, on_delete=models.CASCADE, default=None)
answer = models.CharField(max_length=50, default=None)
def __str__(self):
return self.answer
如果您想计算所有问题的所有答案,可以这样做
def result(request):
context = {}
if request.method=="POST":
result = 0
for answer in Answer.objects.all():
if answer.answer == answer.question.ans:
result += 1
else:
result -= 0.33
context.update({
'result': result,
})
return render(request, 'result.html', context)
或者您可以对其进行优化)这样的查询
for answer in Answer.objects.values("answer", "question__ans"):
if answer["answer"] == answer["question__ans"]:
result += 1
else:
result -= 0.33
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句