You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板中如何显示ChoiceField选项值而非存储键名

Django模板中渲染Choice字段可读值的方法

直接读取模型实例的Choice字段,只会返回数据库中存储的选项键(比如示例中的user_update),不会返回绑定的可读文本,正确的调用方式如下:

核心用法

在模板中使用Django为带choices参数的字段自动生成的get_<字段名>_display方法即可,对应你的字段,写法为:

{{ ticket.get_current_status_display }}

以上写法会自动匹配STATUS_CHOICES元组中对应键的可读值,当存储值为user_update时,会直接渲染出User updated ticket,不需要额外做选项映射。

原理说明

  • 只要模型字段声明时传入了choices参数,Django会自动为该字段生成get_字段名_display()的实例方法,方法内部会自动遍历选项元组,返回匹配存储值的可读标签
  • 尝试使用.value属性取值无效的原因是:传入模板的ticket是通过self.get_object()拿到的模型实例,不是表单实例。模型中存储Choice选项的字段本质是CharField,存储内容就是选项的键字符串,不存在.value属性,该属性是表单绑定字段的属性,不适用于直接取模型实例的场景。

效果验证

对应配置的STATUS_CHOICES元组,不同存储值的渲染结果对应如下:

  • 存储值new_ticket:渲染为New ticket submitted
  • 存储值user_update:渲染为User updated ticket
  • 存储值need_info:渲染为Need more information
  • 存储值completed:渲染为Completed

该方法不需要修改现有表单、视图、模型的配置,直接在模板中替换变量名即可生效。


内容的提问来源于stack exchange,提问作者AustinNotAustin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 03:12:23