2012-05-23 2 views
0

SQLAlchemy에서 일대 다 관계의 체인을 쿼리하는 방법을 찾고 있습니다. (자료가 선언 기지) 다음과 같은 모델을 감안할 때 :SQLAlchemy가 일대 다 관계의 체인을 쿼리합니다.

class Book(Base): 
    id = Column(Integer, primary_key=True) 
    chapters = relationship("Chapter", backref="book") 

class Chapter(Base): 
    id = Column(Integer, primary_key=True) 
    book_id = Column(Integer, ForeignKey(Book.id)) 
    pages = relationship("Page", backref="chapter", lazy="dynamic") 

class Page(Base): 
    id = Column(Integer, primary_key=True) 
    chapter_id = Column(Integer, ForeignKey(Chapter.id)) 

나는 그들이 (장을 통해)와 관련된 책으로 페이지 개체를 조회 할 필요가있다. 그러나이 경우에는

Page.query.filter(Page.chapter.book_id == 1) 

이 작동하지 않습니다. 페이지 수는 꽤 큽니다 (따라서 챕터를 쿼리 할 때 lazy="dynamic" 매개 변수), 페이지 테이블에 book_id 열을 추가하여 표준화를 해제하지 마십시오.

답변

1
qry = Page.query.join(Chapter).join(Book).filter(Book.id == 1) 
관련 문제