Отфильтровать вложенные данные SQLAlchemy

Пытаюсь получить всех авторов, кто публиковал свои посты (причем у каждого автора должны быть перечислены все его ОПУБЛИКОВАННЫЕ (is_visible=True) посты)

user.py

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)
    username = Column(String(10), nullable=False, unique=True)
    posts = relationship("Post", back_populates="author")

post.py

class Post(Base):
    __tablename__ = 'post'
    id = Column(Integer, primary_key=True)
    name = Column(String(100))
    is_visible = Column(Boolean, nullable=False, server_default=text("'1'"))
    author_id = Column(ForeignKey("user.id"), nullable=False, index=True)
    author = relationship('User', back_populates="posts")

удалось сделать так:

authors = db.query(User).filter(User.posts.any(is_visible=True)).all()
for author in authors:
    author.posts = [post for post in author.posts if post.is_visible]
return authors

интересно, а есть ли иной способ без использования циклов?


Ответы (0 шт):