Я использую wtforms_sqlalchemy в своих приложениях для пирамиды и задаю несколько QuerySelectField
s. Для запроса запроса фабрика запросов использует импортированный объект DBSession
.Использовать WTForms QuerySelectField с сеансом db Pyramid 1.7.
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)
Пирамида 1,7 представила новый SQLAlchemy помост, который крепит объект дб сеанса к каждому запросу. Использование нового леса mymodel_choices
должно использовать request
из моего представления для доступа к сессии db. Поле не имеет доступа к объекту запроса, хотя и не знает, чтобы вызвать фабрику с ним.
Моя идея состояла в том, чтобы обновить query_factory
непосредственно с точки зрения, но это не похоже на логический способ сделать это. Как я могу использовать QuerySelectField
, когда сеанс db является частью объекта запроса?
Используя метод python2, метод super() не записывается как это, используйте ** super (Form, self) .__ init __ (** kwargs) ** –
@ JérômePigeot, естественно, так было, что только давидис предположил, что вы не используете устаревшую версию Python;) –