我有一个绑定形式的ChoiceField,其选择是:
[('all', 'All users'), ('group', 'Selected groups'), ('none', 'None')]
在模板中,访问其绑定值(要存储的实际值;每个元组的第一个元素)和选项都没有问题。有了这些信息,我知道我应该能够访问显示值,或每个元组的第二个元素。但是我怎么能在模板中做到这一点?感谢。
答案 0 :(得分:12)
我怀疑没有自定义模板标签或过滤器就可以完成。 自定义模板过滤器可能看起来:
@register.filter
def selected_choice(form, field_name):
return dict(form.fields[field_name].choices)[form.data[field_name]]
答案 1 :(得分:4)
**编辑**
Oups!阅读以下评论后,快速编辑此答案。
bound_form['field'].value()
答案 2 :(得分:1)
在型号中
STATUS_CHOICES = (
(0, _("Draft")),
(1, _("Started")),
(2, _("Stopped")),
)
class Study(models.Model):
status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, default=0)
@property
def get_status(self):
return STATUS_CHOICES[self.status][1]
在您的模板中(您已将模型实例作为对象传递)
{{ object.get_status }}
答案 3 :(得分:0)
点击此链接 - https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.get_FOO_display
您可以使用此函数返回显示名称 - ObjectName.get_FieldName_display()
将ObjectName替换为您的类名和FieldName,其字段需要获取显示名称。
答案 4 :(得分:0)
我有一个使用FormView
基于类的视图的联系表单。联系表单包含一些ChoiceField
字段。我没有将提交内容存储在数据库中;只需通过电子邮件发送给网站所有者。这就是我最终做的事情:
def form_valid(self, form):
for field in form.fields:
if hasattr(form[field].field, 'choices'):
form.cleaned_data[field + '_value'] = dict(form[field].field.choices)[form.cleaned_data[field]]
...
答案 5 :(得分:0)
如果您在表单模板中使用{{ form.instance.field }}
,则应显示所选的选择显示名称
答案 6 :(得分:0)
由于使用了'union'方法而无法使用get_FOO_display(因为它返回字典,而不是对象列表)。我写了一个快速模板标签来转换字段显示。
@register.simple_tag
def tag_get_display(obj):
"""
Returns the display of the field when unable to access get_foo_display.
"""
return CHOICES_LIST[obj][1]