从 wtforms 和flask-sqlalchemy 中的数据库查询中获取选择

Pan*_*los 3 flask flask-sqlalchemy flask-wtforms

我正在使用 Flask、SQLAlchemy 和 WTForms 开发一个 Web 应用程序。我想通过数据库查询在SelectField中获取我的选择。

有更多细节。

my_query = my_table.query.with_entities(My_Entities).all()
Run Code Online (Sandbox Code Playgroud)

结果

[(u'1',), (u'2',), (u'3',)]

我的课

class MyForm(Form):
    My_Var = SelectField(choices=RIGHT_HERE)
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

m1y*_*ag1 5

在这种情况下,您可以使用 WTForms 中的扩展。您要做的就是导入QuerySelectField您需要的:

from wtforms.ext.sqlalchemy.fields import QuerySelectField

然后您创建一个函数来查询数据库并返回您需要的内容:

def skill_level_choices():      
    return db.session.query(SkillLevel).all()
Run Code Online (Sandbox Code Playgroud)

获得查询对象后,您可以QuerySelectField使用query_factory参数将其放入您的查询对象中

skill_level = QuerySelectField(u'Skill level',      
                               validators=[Required()],
                               query_factory=skill_level_choices)
Run Code Online (Sandbox Code Playgroud)