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

8

我试图在模板中显示枚举的名称。为了清楚起见,我在 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")),
)

当我像这样在表单中使用它

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

它非常好用。(用翻译后的值填充下拉列表,当我获取所选项时,只返回id)

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

你能建议我任何方法吗?

谢谢

1个回答

17
为了显示字段值的可读形式,请在模型实例上使用 get_$var_display()方法(对于所有带有choices的字段都会自动生成)。对于您的示例,语法如下:
{{ company.get_wnr_display }}

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

{{ some_value|as_wnr_title }}

它完美地工作,谢谢!有没有关于这些事情的文档可供阅读?我已经阅读了 Django 的文档,但我没有注意到这样的用法。 - brsbilgic
这些都在Django文档中,你可能看错了章节。这个特定的方法在这里:https://docs.djangoproject.com/en/1.3/ref/models/instances/。 - Alexander Lebedev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接