0

SQLAlchemy で 1 対多の関係のチェーンをクエリする方法を探しています。次のモデルが与えられた場合 (Base は宣言ベース):

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

4

1 に答える 1

1
qry = Page.query.join(Chapter).join(Book).filter(Book.id == 1)
于 2012-05-23T21:08:19.747 に答える