我正在尝试使用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"><models.Category object at 0x105064910></option>
<option value="3"><models.Category object at 0x105064d50></option>
</select>
答案 0 :(得分:1)
你做得很好。 QuerySelectField使用Model对象的字符串表示形式进行显示。只需在类别模型中添加__str__
函数即可返回类别名称。
def __str__(self):
return self.name
答案 1 :(得分:1)
我想你可以试试这段代码
categorie=QuerySelectField(query_factory=lambda:Category.query.filter_by(status=1).all(),get_label="name")
在您的表单中 你可以找到更多这个令人敬畏的turorial他们使用它simpe crud app with forms