「または」がそのままの動作をしている理由がわからないようです。私は SQLAlchemy を使用してWTForms.ext.sqlalchemy.QuerySelectFieldおり、設定QuerySelectFieldすることもできますquery_factoryが、それがない場合はフィールドqueryメソッドにフォールバックする必要があります。
例えば
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. これは正しいです?