我的Form
包含SelectField
,如下所示:
CHOICES = [
('A', 'Apple'),
('B', 'Ball'),
('C', 'Cat'),
]
class MyForm(Form):
choice = SelectField(choices=CHOICES)
# ...other fields here... #
当我渲染表单时,它会显示默认选择“Apple”的SelectField。但是我想在开始时没有选择任何内容,因此用户必须自己做出选择。
有没有办法渲染一个空白选项,默认显示但是在提交表单后它不是一个有效的选择?
答案 0 :(得分:1)
值None
的选项将显示在表单中,但在提交时仍然无效。您可以将其设置为默认选项,如下所示:
CHOICES = [
(None, ''), # <-- This option is invalid when submitted
('A', 'Apple'),
('B', 'Ball'),
('C', 'Cat'),
]
class MyForm(Form):
choice = SelectField(choices=CHOICES, default=None)
# ...other fields here... #
将default=None
添加到SelectField是可选的,因为这是默认行为。
您还可以为该值添加字符串,例如(None, '--')
或(None, 'Please select an option')
。该选项仍然无效。
注意:我怀疑这种行为与None对象本身无关,但是因为从表单提交时它被强制转换为'None'
(类型unicode),因此与原始None
不匹配(类型NoneType)。