はじめてのDjangoアプリ作成その4でエラーに遭遇した。
エラーメッセージは
TypeError at /polls/1/vote/
cannot unpack non-iterable int object
というもの。
結論として、原因はquestion = get_object_or_404(Question, question_id)
でpk=question_id
とせず直で渡していたためであった。
直とDjangoがKeyと認識できなかったものと推測。
なおコードは以下の通り。
def vote(request, question_id):
question = get_object_or_404(Question, question_id)
try:
selected_choice = question.choice_set.get(pk=request.POST["choice"])
except (KeyError, Choice.DoesNotExist):
return render(
request,
"polls/detail.html",
{
"question": question,
"error_message": "You didn't select a choice.",
},
)
else:
selected_choice.votes += 1
selected_choice.save()
return HttpResponseRedirect(reverse("polls:results", args=(question.id,)))