Django:如何根据实际值和选择访问模板中ChoiceField的显示值?

tam*_*are 13 django django-templates django-forms

我有一个绑定形式的ChoiceField,其选择是:

[('all', 'All users'), ('group', 'Selected groups'), ('none', 'None')]
Run Code Online (Sandbox Code Playgroud)

在模板中,我可以访问其绑定值(要存储的实际值;每个元组的第一个元素)和选项.有了这些信息,我知道我应该能够访问显示值,或每个元组的第二个元素.但是我怎么能在模板中做到这一点?谢谢.

bmi*_*lac 12

我怀疑没有自定义模板标签或过滤器就可以完成.自定义模板过滤器看起来:

@register.filter
def selected_choice(form, field_name):
    return dict(form.fields[field_name].choices)[form.data[field_name]]
Run Code Online (Sandbox Code Playgroud)

  • 我用过:`return form.fields[field_name].queryset.get(pk=form[field_name].value())``form` 变量在迭代使用 queryset= 初始化的表单集及其 self.data 时被调用正在返回 {}。这个解决方案,来自 [Django IRC logs](http://django-irc-logs.com/2014/feb/10/),解决了这个问题。 (2认同)

Thi*_*t J 5

使用get_FOO_display 属性

** 编辑 **

哎呀!阅读以下评论后,快速编辑此答案。

bound_form['field'].value()
Run Code Online (Sandbox Code Playgroud)

应该根据这个变更集工作