gpt4 book ai didi

python - 空标签 ChoiceField Django

转载 作者:行者123 更新时间:2023-11-28 19:35:24 24 4
gpt4 key购买 nike

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

表格.py:

thing = forms.ModelChoiceField(queryset=Thing.objects.all(), empty_label='Label')
color = forms.ChoiceField(choices=COLORS)
year = forms.ChoiceField(choices=YEAR_CHOICES)

我已经尝试过这里建议的解决方案:

Stack Overflow Q - 设置 CHOICES = [('','All')] + CHOICES 导致内部服务器错误。

Stack Overflow Q2 - 在我的选择中定义了 ('', '--------'), 之后,仍然默认为列表中的第一项,而不是 ('', '--------'), 选择。

Gist - 尝试使用此处定义的 EmptyChoiceField,但无法使用 Django 1.4。

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

最佳答案

请参阅 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, ('', '----'))

关于python - 空标签 ChoiceField Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14541074/

24 4 0