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

如何在Django模板中获取Form表单ChoiceField选项的人类可读值

Django表单ChoiceField获取人类可读选项值的实现方法

以下是三种常用实现方案:

方案1:自定义模板过滤器(最推荐,可复用性最高)

  1. 在你的Django应用目录下新建templatetags文件夹,在文件夹内新增__init__.py空文件,再新建自定义标签文件例如form_utils.py,写入以下代码:
from django import template

register = template.Library()

@register.filter
def get_choice_display(form_field):
    select_value = form_field.value()
    # 空值直接返回
    if not select_value:
        return ""
    # 遍历选项匹配显示值
    for val, display_text in form_field.field.choices:
        if val == select_value:
            return display_text
    # 无匹配返回原始值
    return select_value
  1. 在模板顶部引入自定义标签:
{% load form_utils %}
  1. 直接在需要渲染的位置调用即可:
{{ form.reviewsign|get_choice_display }}

方案2:模板内直接遍历选项(无需额外写Python代码,适合单次使用场景)

直接在模板对应位置写入以下逻辑:

{% for val, display_text in form.reviewsign.field.choices %}
    {% if val == form.reviewsign.value %}
        {{ display_text }}
    {% endif %}
{% endfor %}

方案3:视图层预处理后传给模板

在视图中提前匹配好显示值,直接传到模板渲染:

def your_view(request):
    form = MultiFilterForm(request.GET or None)
    review_sign_display = ""
    if form.is_valid():
        selected_val = form.cleaned_data['reviewsign']
        # 直接把选项转成字典匹配值
        review_sign_display = dict(form.fields['reviewsign'].choices)[selected_val]
    return render(request, "你的模板路径.html", {
        "form": form,
        "review_sign_display": review_sign_display
    })

模板中直接调用变量即可:

{{ review_sign_display }}

注意:你问题中写的{{form.review.value}}字段名有误,你定义的表单字段名为reviewsign,调用时注意对应字段名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:54:03