2016-03-22 156 views
3

ユーザーに表示する際にSelectFieldの値を事前に選択したいと考えています。 default引数は、インスタンス化時に渡されたときに機能しますが、一度フィールドが初期化されると機能しません。SelectField flask-WTFormsでの初期化後のデフォルト値の設定

私は編集のためにユーザーにフォームを提示する前に、オプションを事前に選択 default値を使用しようとすると、それは動作しません
class AddressForm(Form): 
    country = SelectField('Country',choices=[('GB', 'Great Britan'), ('US', 'United States')], default='GB') # works 

address_form = AddressForm() 
address_form.country.default='US' # doesnot work 

ユーザーに提示する前に既定値を既定値に設定する解決策が必要です。

シナリオ2:また、フォームのインスタンスが作成されると、データがバインドさ

class AddressForm(Form): 
     country = SelectField('Country') # works 

address_form = AddressForm() 
address_form.country.choices=[('GB', 'Great Britan'), ('US', 'United States')] 
address_form.country.default='US' # doesnot work 

答えて

4

を動作しません。それ以降のデフォルトの変更は何もしません。 choicesを変更する理由は、検証に影響し、validateが呼び出されるまで実行されないためです。

form constructorにデフォルトデータを渡してください。if no form data was passedが使用されます。デフォルトは初めてレンダリングされ、ユーザーが値を変更しない場合は2回目にポストされます。

form = AddressForm(request.form, country='US') 

(あなたはフラスコ-WTFのFormを使用している場合は、request.form一部を残すことができます。)

関連する問題