Python SelectField强制我从下拉列表中选择一个选项

Python SelectField强制我从下拉列表中选择一个选项,python,flask,flask-wtforms,Python,Flask,Flask Wtforms,我正在创建一个包含电子邮件、地址、州、邮政编码和国家的烧瓶表单。只有电子邮件是必填字段。其他人都不是。但是,表单强制用户从下拉列表中选择一个州和一个国家 州和国家都是下拉选项 class UserForm(FlaskForm): email = EmailField('E-Mail', validators=[InputRequired()]) address1 = StringField('Address line 1', render_kw={"placeholder": "

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

州和国家都是下拉选项

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)
我甚至把州作为可选字段。这只发生在下拉字段中

我已经看了几个关于StackOverflow的帖子,但是他们没有回答这个问题。这些帖子建议删除这些选择。我需要州和国家的下拉列表是可见的,但用户不需要作出选择,如果他们不想。在本例中,我将只向数据库返回一个空值


有人能告诉我如何做到这一点吗?

只需提供一个选项来表示非选择。例如

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)

根据定义选择字段需要选择某些内容,因此在UI中添加一个表示非选择项的选项。e、 g.
[('Choose a State','XX'),('alizona','AZ')
然后默认选择Pick an选项。