2016-03-22 12 views
3

Ich möchte den Wert für SelectField bei der Anzeige für Benutzer vorwählen. default Argument funktioniert, wenn es zum Zeitpunkt der Instanziierung übergeben wird, aber nicht funktioniert, sobald das Feld initialisiert wird.Standardwert nach der Initialisierung in SelectField-Kolben-WTForms setzen

class AddressForm(Form): 
    country = SelectField('Country',choices=[('GB', 'Great Britan'), ('US', 'United States')], default='GB') # works 

Wenn ich versuche, default Wert zu verwenden Option vorzuwählen, bevor das Formular Benutzer zur Bearbeitung präsentiert, es funktioniert nicht.

Benötigen Sie eine Lösung, um den Standardwert auf voreingestellte Werte festzulegen, bevor Sie dem Benutzer präsentieren.

Szenario 2: Auch nicht funktioniert

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 

Antwort

4

Sobald eine Instanz des Formulars erstellt wird, werden die Daten gebunden. Das Ändern der Standardeinstellung macht danach nichts. Der Grund für die Änderung von choices ist, dass es die Validierung betrifft, die nicht ausgeführt wird, bis validate aufgerufen wird.

Übergeben Sie die Standarddaten an die form constructor, und es wird if no form data was passed verwendet. Der Standardwert wird beim ersten Mal angezeigt und dann beim zweiten Mal, wenn der Benutzer den Wert nicht ändert.

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

(Wenn Sie mit Flask-WTF Form die Sie request.form Teil auslassen kann.)

Verwandte Themen