繁体   English   中英

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

[英]How to format the labels of choices in a choice field from a Django form?

我想更改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代码中完成这种格式化?

最简单的方法可能是简单地动态创建一个不同的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],
    )

因此,在这里我们创建了第二个列表,其列表理解为 ,而不是('T1', 'Thing 1')包含('T1', 'T1 - Thing 1')作为项目。 我们改变CHOICES元组,我们只建立一个新的列表喂到ChoiceField

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM