我想更改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代码中完成这种格式设置?
答案 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
。