首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空标签ChoiceField Django

空标签ChoiceField Django
EN

Stack Overflow用户
提问于 2013-01-26 20:06:35
回答 9查看 63.7K关注 0票数 51

您如何使ChoiceField的标签表现得像ModelChoiceField?是否有方法设置empty_label,或者至少显示一个空白字段?

Forms.py:

代码语言:javascript
复制
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没有工作。

但这些都不适合我..。你会如何解决这个问题?谢谢你的想法!

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-08-08 22:10:02

下面是我使用的解决方案:

代码语言:javascript
复制
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();'}))
票数 24
EN

Stack Overflow用户

发布于 2013-01-26 23:58:34

请参阅关于ChoiceField的Django 1.11文档。ChoiceField的“空值”被定义为空字符串'',因此元组列表应该包含一个''键,该键映射到您希望为空值显示的任何值。

代码语言:javascript
复制
### 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,则可以插入一个,以便它首先显示在窗体下拉菜单中:

代码语言:javascript
复制
CHOICE_LIST.insert(0, ('', '----'))
票数 62
EN

Stack Overflow用户

发布于 2013-01-26 22:48:08

您可以尝试这样做(假设您的选择是元组):

代码语言:javascript
复制
blank_choice = (('', '---------'),)
...
color = forms.ChoiceField(choices=blank_choice + COLORS)
year = forms.ChoiceField(choices=blank_choice + YEAR_CHOICES)

而且,我无法从代码中判断这是表单还是ModelForm,但这是后者,无需在这里重新定义表单字段(您可以将choices=COLORS和choices=YEAR_CHOICES直接包含在模型字段中)。

希望这能有所帮助。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14541074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档