2016-05-31 9 views
0

Im Anschluss an die Beispiele hier laden: http://docs.sqlalchemy.org/en/latest/orm/loading_relationships.html, kann man leicht alle die Adressen für die User mit dem Namen Jack laden etwa so:Selektiv backrefs in SQLAlchemy

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

Allerdings gibt es kein Beispiel dafür, wie zu laden nur die Adressen, die ein bestimmtes Kriterium erfüllen - sagen wir, ich möchte nur die Adressen von Jack, die mit '@ google.com' enden.

Ist dies mit SQLAlchemy möglich - konkret, kann ich etwas an joinedload() oder subqueryload() übergeben, die mir erlaubt, Adressen zu filtern?

Antwort

1

Sie müssen ein manuell dann angeben contains_eager beitreten tun, wie folgt aus:

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

Dies ist Umriss in der docs.

+0

Danke! Die Dokumente enthalten das, aber man kann es leicht übersehen! –