按照此处的示例:http://docs.sqlalchemy.org/en/latest/orm/loading_relationships.html,您可以轻松加载所有 User
的地址,其名称为Jack,如下所示:
jack = session.query(User).options(joinedload('addresses')).\
filter_by(name='jack').all()
但是,没有关于如何仅加载符合特定条件的地址的示例 - 假设我只希望杰克的那些地址以' @ google.com'结尾。
SQLAlchemy是否可以这样做 - 具体来说,我可以将某些内容传递给允许我过滤地址的joinedload()
或subqueryload()
吗?
答案 0 :(得分:1)
您必须手动加入,然后指定contains_eager
,如下所示:
session.query(User).join(User.addresses) \
.filter(User.name == "jack",
Address.email.like("%@google.com")) \
.options(contains_eager(User.addresses))
这是docs中的概要。