Ошибка запроса к базе данных в представлениях django при использовании фильтра
Только что прошел учебник по Django и сейчас играю и тестирую материал.
Мой вопрос в том, почему следующая строка работает и позволяет мне перейти на страницу без проблем:
test = Choice.choices.all()
В то время как следующая строка фильтра дает мне сообщение об ошибке ValueError: too many values to unpack (expected 2)
test = Choice.choices.get("question_id=6")
Даже когда я пробую следующие две строки, это не работает. Не знаю, что происходит и почему
test = Choice.choices.get("question_id=6")[0]
test = Choice.choices.get("question_id=6")[0].question_text
Я чувствую, что мне нужно действительно понять, что происходит и почему, чтобы я мог делать правильные запросы в будущем
Это из-за синтаксической ошибки. Должно быть так:
test = Choice.choices.get(question_id="6")
или, если поле question_id
равно int
(почти уверен, что это так):
test = Choice.choices.get(question_id=6)
По сути, то, что находится внутри скобки (параметр) - это перевод Django условия SQL WHERE
, где вы можете указать, какое поле и какое значение включить в результат.
Фактически, это соответствует: SELECT * FROM table WHERE question_id=6
Вы поместили условие where внутрь строки, но метод .get()
не принимает строку.
Сообщите мне, работает ли это!