Моя абстракция: Книга имеет только одного пользователя (от имени автора ) и отношения "многие ко многим" с пользователем ( как соавторы ):
class UserBook(Base):
__tablename__ = 'user_book'
user_id = Column(String(512), ForeignKey('user.id'), primary_key=True)
book_id = Column(String(512), ForeignKey('book.id'), primary_key=True)
collaboration_type = Column(Integer, default=1)
book = relationship('Book', back_populates='users')
user = relationship('User', back_populates='books')
class User(Base):
__tablename__ = 'user'
id = Column(String(512), primary_key=True)
books = relationship('UserBook', back_populates='user')
class Book(Base):
__tablename__ = 'book'
id = Column(String(512), primary_key=True)
author = Column(String(512), ForeignKey('user.id'), nullable=False)
collaborators = relationship('UserBook', back_populates='book')
name = Column(String(512))
description = Column(String(512), default='')
Я хочу выбрать все книги, где я являюсь автором или Я соавтор, использующий декларативные запросы SQLAlchemy, если это возможно.
Мне удалось объединиться с соавтором, но я не уверен, как или с авторским фильтром.