2016-05-31 36 views
0

這裏繼例子選擇性加載backrefs:http://docs.sqlalchemy.org/en/latest/orm/loading_relationships.html,可以很容易地加載所有地址爲User與叫傑克像這樣:在SQLAlchemy的

jack = session.query(User).options(joinedload('addresses')).\ 
     filter_by(name='jack').all() 

但是,對於如何加載沒有實例只有那些符合特定標準的地址 - 比方說,我只想要那些以「@ google.com」結尾的地址。

這可能與SQLAlchemy - 具體而言,我可以傳遞給joinedload()subqueryload()允許我過濾地址?

回答

1

你必須做一個連接,然後手動指定contains_eager,像這樣:

session.query(User).join(User.addresses) \ 
        .filter(User.name == "jack", 
          Address.email.like("%@google.com")) \ 
        .options(contains_eager(User.addresses)) 

這是docs輪廓。

+0

謝謝!文檔確實包含這個,但是人很容易錯過! –