Ваш лог c (упрощенный):
if request.method == 'POST':
if answer.answer is not None:
# HttpResponse created and freed right away
pass
else:
answer.answer = selected_choice
answer.save()
answer = Answer.objects.create(participant=participant,
question=attention_question)
return render(request, 'study/AttentionCheck.html', context)
Обратите внимание, что 1) вы всегда вызываете Answer.objects.create
2) всегда возвращаете обработанный AttentionCheck. html.
Я также заметил, что вы имеете здесь два разных вопроса: вопрос с id
, заданным POST, и вопрос с id
из 13.
В зависимости от ваших точных требований, я думаю, что это должно быть решением:
def attention_view(request):
participant = get_object_or_404(Participant, user=request.user)
question = FIXME_WHICH_QUESTION
answer, created = Answer.objects.get_or_create(participant=participant,
question=question)
if request.method == 'POST' and answer.answer is None:
answer.answer = selected_choice
answer.save()
context = {'attention_question': question, 'answer': answer}
return render(request, 'study/AttentionCheck.html', context)