2017-01-23 84 views
0

我想使用WTForms預填充選擇字段。 我想使用數據庫中的數據預先填充選擇字段(值和標籤)。預填充(查詢)SelectField - WTForms?

數據庫:

+----+----------+-------------------------------------+--------+ 
| id | category | description       | status | 
+----+----------+-------------------------------------+--------+ 
| 1 | Cinema | About movies      |  1 | 
| 2 | Play  | About music.      |  0 | 
| 3 | News  | Breaking news      |  1 | 
+----+----------+-------------------------------------+--------+ 

我想相當於QuerySelectField這樣:

class MyForm(Form): 
    category = SelectField(u'Category', choices=[('1', 'Cinema'), ('3','News')]) 

我到目前爲止已經做到了這一點:

def getCategories(): 
    return Category.query.filter_by(status=1).all() 

class MyForm(Form): 
    category = QuerySelectField(u'Category', 
      [validators.Required()], 
      query_factory = getCategories 
      ) 

標籤會以類似這個:

<select class="form-control" id="category" name="category"> 
<option value="1">&lt;models.Category object at 0x105064910&gt;</option> 
<option value="3">&lt;models.Category object at 0x105064d50&gt;</option> 
</select> 

回答

1

我想你可以試試這個代碼

categorie=QuerySelectField(query_factory=lambda:Category.query.filter_by(status=1).all(),get_label="name")

在窗體 你可以找到更多這真棒turorial他們用它simpe crud app with forms

1

你做得很好。 QuerySelectField使用您的Model對象的字符串表示來顯示。只需將__str__函數添加到返回類別名稱的Category類型中即可。

def __str__(self): 
    return self.name