如何格式化Django表单中选择字段中的选择标签?

时间:2018-07-03 21:28:00

标签: python django django-forms

我想更改Django表单的选择中显示的文本,请选择选择字段。这是一些示例代码:

CHOICES = (
    ('T1', 'Thing 1'),
    ('T2', 'Thing 2')
)

class ExampleForm(forms.Form):
    field = forms.ChoiceField(
        widget = forms.Select(),
        choices = CHOICES,
    )

我不确定是否需要其他任何代码来解决此问题,但是当我将此表单呈现到模板中时,CHOICES的值将显示在选择字段下拉列表中。我想要的是将键和值同时显示在下拉菜单中,同时仍与后端的键相等。像这样:

Field:
--------------
|           v|
--------------
--------------
|T1 - Thing 1|
|T2 - Thing 2|
--------------

有没有办法在forms.py代码中完成这种格式设置?

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是简单地动态创建另一个choices列表

CHOICES = (
    ('T1', 'Thing 1'),
    ('T2', 'Thing 2')
)

class ExampleForm(forms.Form):
    field = forms.ChoiceField(
        widget = forms.Select(),
        choices = [(k, '{} - {}'.format(k, v)) for k, v in CHOICES],
    )

因此,我们在这里创建第二个列表,其中包含 list comprehension ,该列表包含('T1', 'Thing 1')而不是('T1', 'T1 - Thing 1')。我们不会更改CHOICES元组,我们只会构造一个新列表以馈送到ChoiceField