2015-10-06 80 views
8

我想查詢這個結構預先加載:SQLAlchemy的:一個以上的關係

A -> B 
B -> C 
B -> D 

什麼是與負載接口做到這一點的語法,文檔不是很清楚這個(http://docs.sqlalchemy.org/en/latest/orm/loading_relationships.html#sqlalchemy.orm.joinedload)。我看到的是怎麼做的:

A -> B 
B -> C 
C -> D 

鑑於查詢:

query(A).options(joinedload(A.b).joinedload(B.c)) 

如何在指定的B(B.d)第二關係鏈向後走?

+0

如果我理解正確你的問題。如果有的話,我相信你可以使用'backref'。否則,你可能想在你的關係聲明中定義它。 – adarsh

回答

8

只需要添加另外.options(...)一個新的關係路徑:

q = (
    session 
    .query(A) 
    .options(joinedload(A.b).joinedload(B.c)) 
    .options(joinedload(A.b).joinedload(B.d)) 
) 
+0

你不能也傳遞多個選項作爲像這樣的位置參數:'.options(joinedload(...)。joinedload(...),joinedload(...)。joinedload(...))'? – Bob