您如何使ChoiceField的标签表现得像ModelChoiceField?是否有方法设置empty_label,或者至少显示一个空白字段?
Forms.py:
thing = forms.ModelChoiceField(queryset=Thing.objects.all(), empty_label='Label')
color = forms.ChoiceField(choices=COLORS)
year = forms.ChoiceField(choices=YEAR_CHOICES)我已经尝试了这里提出的解决方案:
堆栈溢出Q -设置CHOICES = [('','All')] + CHOICES会导致内部服务器错误。
堆栈溢出Q2 -在我的选择中定义了('', '---------'),之后,仍然默认为列表中的第一项,而不是('', '---------'),选项。
要旨 --尝试使用这里定义的EmptyChoiceField,但是使用Django 1.4没有工作。
但这些都不适合我..。你会如何解决这个问题?谢谢你的想法!
发布于 2013-08-08 22:10:02
下面是我使用的解决方案:
from myapp.models import COLORS
COLORS_EMPTY = [('','---------')] + COLORS
class ColorBrowseForm(forms.Form):
color = forms.ChoiceField(choices=COLORS_EMPTY, required=False, widget=forms.Select(attrs={'onchange': 'this.form.submit();'}))发布于 2013-01-26 23:58:34
请参阅关于ChoiceField的Django 1.11文档。ChoiceField的“空值”被定义为空字符串'',因此元组列表应该包含一个''键,该键映射到您希望为空值显示的任何值。
### forms.py
from django.forms import Form, ChoiceField
CHOICE_LIST = [
('', '----'), # replace the value '----' with whatever you want, it won't matter
(1, 'Rock'),
(2, 'Hard Place')
]
class SomeForm (Form):
some_choice = ChoiceField(choices=CHOICE_LIST, required=False)注意,如果您希望使用required=False表单字段是可选的,则可以避免表单错误。
此外,如果您已经有一个没有空值的CHOICE_LIST,则可以插入一个,以便它首先显示在窗体下拉菜单中:
CHOICE_LIST.insert(0, ('', '----'))发布于 2013-01-26 22:48:08
您可以尝试这样做(假设您的选择是元组):
blank_choice = (('', '---------'),)
...
color = forms.ChoiceField(choices=blank_choice + COLORS)
year = forms.ChoiceField(choices=blank_choice + YEAR_CHOICES)而且,我无法从代码中判断这是表单还是ModelForm,但这是后者,无需在这里重新定义表单字段(您可以将choices=COLORS和choices=YEAR_CHOICES直接包含在模型字段中)。
希望这能有所帮助。
https://stackoverflow.com/questions/14541074
复制相似问题