Django投票教程模板无法渲染Choice模型的choice_text问题
问题解决:Django模板中Choice文本无法显示
你的问题出在模板的循环变量命名错误,导致无法正确引用Choice对象的choice_text属性。
错误原因
在模板的for循环里,你把循环变量命名为question,但后续却尝试引用未定义的choice变量,同时这个循环变量还覆盖了外层传入的question对象:
{% for question in question.choice_set.all %} <li> {{choice.choice_text}} </li> {% endfor %}
修改后的模板代码
把循环变量改为choice,并正确引用该变量的属性:
<h1>{{ question.question_text }}</h1> <ul> {% for choice in question.choice_set.all %} <li>{{ choice.choice_text }}</li> {% endfor %} </ul>
解释
question.choice_set.all会返回当前Question关联的所有Choice对象,循环时需要用一个变量(比如choice)来接收每个迭代的对象- 之前的循环变量用
question,不仅和外层的Question对象重名造成混淆,更关键的是你在列表项里用了{{choice.choice_text}},而choice这个变量根本没在循环中定义,所以无法渲染出文本,只能显示空的列表项符号
你的视图函数和模型定义都是正确的,只需要修改模板中的循环部分即可正常显示Choice的文本内容。
内容的提问来源于stack exchange,提问作者JEAN MAXIMUS CACACHO
相关产品推荐
相关产品推荐

