【发布时间】:2016-08-27 02:54:08
【问题描述】:
我在我的金字塔应用程序中使用 wtforms_sqlalchemy 并定义了几个 QuerySelectFields。查询工厂使用导入的DBSession 对象进行查询。
from wtforms.form import Form
from wtforms_sqlalchemy.fields import QuerySelectField
from myapp.models import DBSession, MyModel
def mymodel_choices():
choices = DBSession.query(MyModel)
return choices
class MyForm(Form):
mymod = QuerySelectField(u'Field', query_factory=mymodel_choices)
Pyramid 1.7 引入了一个新的 SQLAlchemy 脚手架,它将 db 会话对象附加到每个请求。在我看来,使用新的脚手架mymodel_choices 必须使用request 才能访问数据库会话。但该字段无权访问请求对象,也不知道用它调用工厂。
我的想法是直接从视图更新query_factory,但这似乎不是一个合乎逻辑的方法。当数据库会话是请求对象的一部分时,我如何使用QuerySelectField?
【问题讨论】:
标签: python sqlalchemy pyramid wtforms