模板标签中翻译的枚举字段

brs*_*gic 5 django enums django-templates templatetags

我试着在模板中显示一个枚举的名称.要清楚,我有类似的课程 model.py

class EmployerWorkerNumberRange():
R_0 = 0
R_1_5 = 1
R_6_15 = 2
UNKNOWN = 3

EMPLOYER_WORKER_NUMBER_RANGE =(
    (R_0,_("wnr_0")),
    (R_1_5 ,_("wnr_1_5")),
    (R_6_15,_("wnr_6_15")),
    (UNKNOWN,_("UnknownWorkerNumberRange")),
)
Run Code Online (Sandbox Code Playgroud)

当我在形式上使用它时

wnr = forms.ChoiceField(label=_("emp_full_reg_wnr"), required=True, choices=EmployerWorkerNumberRange.EMPLOYER_WORKER_NUMBER_RANGE)

它工作得很好.(用翻译的值填充下拉列表,当我得到所选项目时,它只会转换为id)

我的问题是如何通过给出它的id来在我的模板中显示任何翻译的值.例如,我想使用它EmployerWorkerNumberRange.EMPLOYER_WORKER_NUMBER_RANGE[0]

你能建议我吗?

谢谢

Ale*_*dev 13

要显示字段值的人类可读性,请在模型实例上使用get_$var_display()方法(为所有字段自动创建choices).对于你的例子,它是这样的:

{{ company.get_wnr_display }}
Run Code Online (Sandbox Code Playgroud)

要通过索引获取没有模型实例的值,最简单的方法是编写自定义过滤器,将存储在变量中的索引转换为所需的值:

{{ some_value|as_wnr_title }}
Run Code Online (Sandbox Code Playgroud)