我似乎无法找出为什么“或”的行为方式是这样的。我正在使用 SQLAlchemy 并且WTForms.ext.sqlalchemy.QuerySelectField
可以QuerySelectField
设置query_factory
,但是如果缺少它应该回退到 fieldsquery
方法:
例如
class Form1(Form):
fielda = QuerySelectField('Field A')
您还可以query_factory
像这样设置参数:
class Form1(Form):
fielda = QuerySelectField('Field A', query_factory=somefunction)
然后在其他地方你使用这样的表格:
form = Form1(request.form)
form.fielda.query = MyObjects.query.all()
我看到的是,如果MyObjects.query.all()
返回一个空列表,我会NoneType not callable
在 QuerySelectField _get_object_list() 方法的这一行上得到一个异常:
query = self.query or self.query_factory()
基本上,无论 的值是多少self.query
,即使它被分配给 ,它or
仍然在调用。self.query_factory()
None
所以,我的问题是,这是预期的行为or
吗?它似乎对两者都进行了评估,然后决定是否需要使用第二个值(如果第一个值是 )None
。这个对吗?