只是在浏览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)
基本上,括号(参数)里面的内容是SQLWHERE
条件的Django翻译,您可以在其中指定要在结果中包含的字段和值。事实上,它对应于:SELECT * FROM table WHERE question_id=6
你把这个where条件放在一个字符串中,但是.get()
方法不接受字符串。
让我知道它是否有效!