2017-07-19 215 views
0

我正在創建一個包含電子郵件,地址,州,郵政編碼和國家的表格。只有電子郵件是必填字段。其他人都沒有。然而,Flask WTForms迫使用戶從下拉菜單中選擇一個國家和一個國家。SelectField迫使我從下拉列表中選擇一個選項

州和國家都是下拉選項。

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上的帖子,但他們沒有回答這個問題。這些帖子表明,這些選擇被刪除。我需要州和國家下拉菜單可見,但用戶不需要做出選擇,如果他們不想。在這種情況下,我只會將一個空值返回給數據庫。

有人可以告訴我我該如何做到這一點嗎?

+0

按定義選擇字段需要選擇某些內容,因此添加一個選項以表示UI中的非選項。例如'[('選擇一個州','XX'),('Arizona','AZ')'然後默認選擇一個選項。 – Doobeh

回答

1

只需提供一個選項來表示非選擇。例如。

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) 
+0

謝謝@Doobeh。 –

相關問題