我正在寻找一种方法来查询 SQLAlchemy 中的一对多关系链。给定以下模型(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
页面表添加一列来反规范化。