http://127.0.0.1:8000/polls/1/vote/http://127.0.0.1:8000/polls/1/results/
1
2
3
4
5
6
7
8
9
10
11
12
13
def vote(request, question_id):分析解决
question = get_object_or_404(Question, pk=question_id)
try:
selected_choice = question.choice_set.get(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,)))
pk=request.POST['choice']
总结
在创建一个新的models实例时,如果没有设置主键,那么Django会自动创建一个id字段作为该模型的主键,有时候用id和pk都能达到预期的效果,但是pk更加独立于真正的主键,也就是说不用在意主键是叫id或者是object_id。并且使用pk可以提高一致性,即便模型中有不同的主键。
参考资料