如何获取Django表单ChoiceField中选项的标签?

83 投票
10 回答
102762 浏览
提问于 2025-04-15 11:09

我有一个叫做 ChoiceField 的选择字段,现在我该怎么获取它的 标签 呢?

class ContactForm(forms.Form):
     reason = forms.ChoiceField(choices=[("feature", "A feature"),
                                         ("order", "An order")],
                                widget=forms.RadioSelect)

form.cleaned_data["reason"] 只会给我 featureorder,就是这些。

10 个回答

29

这是最简单的方法:模型实例参考:Model.get_FOO_display()

你可以使用这个函数,它会返回显示名称:ObjectName.get_FieldName_display()

ObjectName替换成你的类名,把FieldName替换成你想要获取显示名称的字段名。

172

可以查看关于 Model.get_FOO_display() 的文档。应该像这样使用:

ContactForm.get_reason_display()

在模板中,可以这样使用:

{{ OBJNAME.get_FIELDNAME_display }}
98

这可能会对你有帮助:

reason = form.cleaned_data['reason']
reason = dict(form.fields['reason'].choices)[reason]

撰写回答