Джанго активизировали яму: PK

Стенографический большая колонна  https://www.dazhuanlan.com/2019/08/26/5d634d9cb14d2/

В «первой заявке Джанго» , я подытожил мой для предварительного понимания процесса разработки приложений Django и рода шагов разработки приложений, я пробовал только появился обрабатывать заявки воспроизводимого по сообщению блог гласит в соответствии с учебным планом ошибка:

Эта ошибка возникает при выборе одного заголовка , чтобы голосовать в опросах после того как я вошел в дом, после скачка на голосование http://127.0.0.1:8000/polls/1/vote/, должны иметь Разумеется http://127.0.0.1:8000/polls/1/results/, тогда я буду проверять цель , сформулированную в голосовании /polls/views.py документа () метод, потому что я установил страницу скачки в этом методе, следующим образом :

1 
2
3
4
5
6
7
8
9
10
11
12
13
Защиту голоса (запрос, question_id): 
вопрос = get_object_or_404 (Вопрос, рк = question_id)
попробовать:
selected_choice = question.choice_set.get (request.POST [ 'выбор']) , за
исключением (KeyError, Choice.DoesNotExist):
возвращение визуализации (запрос , опрос / detail.html ', {
'вопрос': вопрос,
'error_message': "Вы не выбрал выбор.",
})
еще:
selected_choice.votes + = 1
selected_choice.save ()
возвращают HttpResponseRedirect (обратный ( 'опрашивает: результаты', Args = (question.id)))

Анализ и решение

Комбинированная и приводится информация информации «не хватают значений для распаковки (Освобожденную 2, получила 1)», что означает , что меньше значения в распаковке процесса, найти както источника прокурора () метод: Выполнить запрос и вернуть один соответствие объекта данные ключевые аргументы. по данному ключевому слову заявления выполняет запрос и возвращают соответствие объекта. request.POST представляет собой словарь-подобный объект, что позволяет предоставить доступ к данным по имени ключа. В настоящем варианте осуществления, request.POST [ «выбор»] возвращает идентификатор выбранного варианта, идентификатор является первичным ключом, и , следовательно , вместо того, чтобы pk=request.POST['choice']можно.

резюме

При создании нового экземпляра модели, если нет первичного ключа, то Django автоматически создает поле идентификатора в качестве первичного ключа модели, иногда с идентификатором и рк для достижения желаемых результатов, но рк более независимыми от реального первичного ключа, которые не заботятся о первичном ключе называется идентификатором или object_id. Pk может улучшить консистенцию и использование, даже если модель имеет другой первичный ключ.

справочный материал

рекомендация

отwww.cnblogs.com/JimmyShen/p/11411771.html