在Django模板中渲染choices标签名称而非整数字段
问题解答
你不需要修改视图,直接在HTML模板中调整即可解决这个问题。
Django会为带有choices参数的字段自动生成一个get_<字段名>_display()方法,用来获取该字段对应的标签文本。
具体修改步骤:
- 修复视图中的小问题:你的视图里
review_list = Model1.objects.all少了括号,应该改为Model1.objects.all(),否则传递给模板的是查询集对象的引用而非实际数据:
def account(request): review_list = Model1.objects.all() # 补上括号 return render(request,"main/account.html", {'review_list':review_list})
- 修改HTML模板:把
{{Model1.Choice_A }}替换为{{ item.get_Choice_A_display }},这样就能渲染出对应的标签文本了:
<h6>Champagnes</h6> {% for item in review_list%} <table class="table table-hover table-striped table-bordered "> {% if item.user == user%} <tr> <th>Text</th><th>{{ item.get_Choice_A_display }}</th> </tr> {%endif%} </table> {% endfor %}
(顺便把循环变量名从Model1改成了item,避免和模型类名混淆,可读性更好)
原理说明:
当你在模型字段中设置choices后,Django会为每个实例添加get_<字段名>_display()方法,调用它就能返回该字段当前值对应的标签文本,而不是存储的整数值。
内容的提问来源于stack exchange,提问作者PhilM
相关产品推荐
相关产品推荐

