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