我在我的金字塔應用程序中使用wtforms_sqlalchemy並定義幾個QuerySelectField
s。查詢工廠使用導入的DBSession
對象進行查詢。使用WTForms QuerySelectField與金字塔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 scaffold,它將db會話對象附加到每個請求。使用新的腳手架mymodel_choices
必須使用我的視圖中的request
來訪問數據庫會話。該字段雖然不具有對請求對象的訪問權限,但不知道用它來調用工廠。
我的想法是直接從視圖更新query_factory
,但這似乎不是一個合理的方式來做到這一點。當db會話是請求對象的一部分時,我怎樣才能使用QuerySelectField
?
使用python2,super()方法不像這樣寫,使用** super(Form,self).__ init __(** kwargs)** –
@ JérômePigeot自然就是這樣,只是大衛主義認爲你沒有使用過時的Python版本;) –