我有以下情形:過濾關係
class Author(Base):
__tablename__ = 'author'
id = Column(Integer, primary_key = True)
name = Column(String)
books = relationship('Books', backref='author')
class Book(Base):
__tablename__ = 'book'
id = Column(Integer, primary_key = True)
title = Column(String)
我想要做的就是加載誰擁有包含SQL在 標題一本書的所有作者。即
authors = session.query(Author)\
.join(Author.books)\
.filter(Book.title.like('%SQL%')\
.all()
似乎很簡單。
然後我想要做的是遍歷作者,並顯示他們的 書籍。我期望在訪問作者[0] .books時,它將僅返回 其標題中具有「SQL」的書籍。不過,我收到了所有分配給該作者的書籍 。當我訪問關係時,該過濾器應用於作者列表,但不適用於他們的作品列表 。
如何構建我的查詢,以便在篩選關係時(即 書籍),當我訪問該關係時,仍然應用篩選?