SelectField 强制我 select 从下拉列表中进行选择

SelectField forces me to select a choice from drop down

我正在创建一个包含电子邮件、地址、州、邮政编码和国家/地区的烧瓶表单。只有电子邮件是必填字段。 None 其他人是。但是,Flask WTForms 强制用户从下拉列表中 select 一个州和一个国家。

州和国家都是下拉选项。

class UserForm(FlaskForm):
    email = EmailField('E-Mail', validators=[InputRequired()])
    address1 = StringField('Address line 1', render_kw={"placeholder": "Address line 1"})
    address2 = StringField('Address line 2', render_kw={"placeholder": "Address line 2"})
    city = StringField('City', render_kw={"placeholder": "City"})
    state = SelectField('State', [validators.Optional()], default=None, choices=statesList(), render_kw={"placeholder": "State"})
    postal_code = StringField('Postal Code', render_kw={"placeholder": "Postal Code"})
    country = SelectField('Country', default=None, choices=countriesList(), coerce=str, render_kw={"placeholder": "Country"})

@app.route('/create_user', methods=['GET', 'POST'])
def createUser():
    form=UserForm()
    if form.validate_on_submit():
        return render_template('confirm_user.html', email=form.email.data,
address1=form.address1.data,
address2=form.address2.data,
city=form.city.data,
state=form.state.data,
postal_code=form.postal_code.data,
country=form.country.data)

我什至将州设为可选字段。这只发生在下拉字段中。

我已经查看了 Whosebug 上的一些帖子,但他们没有回答这个问题。这些帖子建议删除这些选项。我需要州和国家/地区的下拉菜单可见,但如果用户不想,则不需要制作 selection。在这种情况下,我将 return 一个空白值发送到数据库。

有人可以告诉我如何实现吗?

简单提供一个选项,代表不选择。例如

def states_list():
   return [('XX', 'Pick a Choice'), ('AZ', 'Arizona')]

class UserForm(FlaskForm):
    state = SelectField('State', choices=states_list(), default='XX')

@app.route('/create_user', methods=['GET', 'POST'])
def createUser():
    form=UserForm()
    if form.validate_on_submit():
        if form.state.data == 'XX':
            return 'No State Chosen'
        return '{} Chosen'.format(form.state.data)
    return render_template('form.html', form=form)