詳細情報については_criterion
属性を使用できます。 例:
In [1]: first = User.query.filter(User.confirmed_at.isnot(None))
In [2]: vars(first._criterion)
Out[2]:
{'_orig': (Column('confirmed_at', DateTime(), table=<users>),
<sqlalchemy.sql.elements.Null object at 0x7f7a667e25c0>),
'left': Column('confirmed_at', DateTime(), table=<users>),
'modifiers': {},
'negate': <function sqlalchemy.sql.operators.is_>,
'operator': <function sqlalchemy.sql.operators.isnot>,
'right': <sqlalchemy.sql.elements.Null object at 0x7f7a667e25c0>,
'type': NullType()}
In [3]: second = User.query.filter(User.login_count > 5)
In [4]: vars(second._criterion)
Out[4]:
{'_orig': (Column('login_count', Integer(), table=<users>, nullable=False, server_default=DefaultClause('0', for_update=False)),
BindParameter('%(140163529198168 login_count)s', 5, type_=Integer())),
'left': Column('login_count', Integer(), table=<users>, nullable=False, server_default=DefaultClause('0', for_update=False)),
'modifiers': {},
'negate': <function _operator.le>,
'operator': <function _operator.gt>,
'right': BindParameter('%(140163529198168 login_count)s', 5, type_=Integer()),
'type': Boolean()}
ああ、美しい。私は 'vars'について知らなかった! '.whereclause'は' ._criterion'のエイリアスです。この場合、 'q.whereclause.right.effective_value'を使用することができます。それは私に後の「フー」を与えます。私に 'vars'を見せてくれてありがとう:) – Dave