python – 在選擇欄位中設定預設值,使用wtforms和燒瓶
我正在建立一個產品編輯表單,我需要預先填充以前的資料.
我正在做以下事情:
Product(form): product = TextField('name') category = SelectField('category', choice=[(1,'one'),(2,'two')])
在檢視中:
form.product.data = 'A product name from the database' form.category.data = 'a category name' #This does not work
問題在於SelectField.
我知道有一個’預設’值可以在SelectField上設定.但是,這種情況發生在表單定義類中,而且我還沒有來自sqlalchemy的查詢物件.
那麼,是否有一種在執行時候在選擇域上附加預設值的方法?
如果要設定預設值以使用表單呈現頁面,則可以建立自己的表單或設定值:
class Product(Form): product = TextField('name') category = SelectField('category', choices=[(1,'one'),(2,'two')]) # create instance with predefined value: form1 = Product(category=2) # form1.product == <input id="product" name="product" type="text" value=""> # form1.category == <select id="category" name="category"> #<option value="1">one</option> #<option selected value="2">two</option> #</select> # from1.product.data == None # form1.category.data == 2 # create own form if it need many times: Product2 = type('Product2', (Product,), { 'category': SelectField('category', default=2, choices=[(1,'one'),(2,'two')]) }) form2 = Product2() # form2.product == <input id="product" name="product" type="text" value=""> # form2.category == <select id="category" name="category"> #<option value="1">one</option> #<option selected value="2">two</option> #</select> # from2.product.data == None # form2.category.data == 2
如果要根據要求設定預設表單資料:
with app.test_request_context(method='POST'): form = Product(request.form) # form5.category.data == None form = Product(request.form, category=2) # form5.category.data == 2 with app.test_request_context(method='POST', data={'category': 1}): form = Product(request.form) # form5.category.data == 1 form = Product(request.form, category=2) # form5.category.data == 1
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/17629291/setting-a-default-value-in-the-selectfield-using-wtforms-and-flask