使SelectField默认选择任何内容

时间:2017-09-21 04:58:36

标签: python flask wtforms html-input

我的Form包含SelectField,如下所示:

CHOICES = [
    ('A', 'Apple'),
    ('B', 'Ball'),
    ('C', 'Cat'),
]

class MyForm(Form):
    choice = SelectField(choices=CHOICES)
    # ...other fields here... #

当我渲染表单时,它会显示默认选择“Apple”的SelectField。但是我想在开始时没有选择任何内容,因此用户必须自己做出选择。

有没有办法渲染一个空白选项,默认显示但是在提交表单后它不是一个有效的选择?

1 个答案:

答案 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)。

相关问题