我似乎无法找出为什么“或”的行为方式是这样的。我正在使用 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。这个对吗?