У меня есть следующий сценарий:Фильтрация отношений в SQL алхимии
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». Тем не менее, я получаю ВСЕ книги, присвоенные этому автору . Фильтр применяется к списку авторов, но не к их книгам, когда я обращаюсь к отношениям.
Как я могу структурировать свой запрос таким образом, чтобы, если я фильтрую связь (например, книг), когда я иду для доступа к этой связи, фильтрация по-прежнему применяется?