2016-03-22 14 views
3

'daki başlatmadan sonra varsayılan değeri ayarlama Kullanıcıya görüntülerken SelectField için değeri önceden seçmek istiyorum. default bağımsız değişken, örnekleme sırasında iletildiğinde çalışır ancak alan başlatıldıktan sonra çalışmaz. SelectField flask-WTForms

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

Ben düzenleme için kullanıcıya formu sunmadan önce seçeneği önceden seçmek için default değerini kullanmayı deneyin

, bu işe yaramaz.

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

Kullanıcıya sunmadan önce öntanımlı değerlere varsayılan değeri ayarlamak için bir özüm gerekir.

Senaryo 2: Ayrıca

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 

cevap

4

formunun bir örneği oluşturulduktan sonra, veri bağlı çalışmaz. Bundan sonra varsayılanı değiştirmek hiçbir şey yapmaz. choices çalışmalarının değiştirilmesinin nedeni, validate çağrılıncaya kadar geçerliliğini etkilememesidir.

Varsayılan verileri form constructor'a iletin ve if no form data was passed kullanılacaktır. Varsayılan ilk kez oluşturulacak, ardından kullanıcı değeri değiştirmezse ikinci kez yayınlanacaktır.

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

(kullandığınız takdirde Flask-WTF en Form Eğer request.form kısmını bırakabilir.)