SQLAlchemy удалить записи многие ко многим - PullRequest
0 голосов
/ 03 июня 2019

У меня есть 2 таблицы (Пользователь, Подписчики), которые связаны друг с другом.

Теперь, когда пользователь удаляется, все данные с похожим пользователем удаляются из таблицы Подписчиков.

Модель пользователя:

class User():
    id = Column(Integer, primary_key=True)
    username = Column(String(32), nullable=False, unique=True)
    followed = relationship(
        'User',
        secondary='followers',
        primaryjoin='User.id == followers.c.follower_id',
        secondaryjoin='User.id == followers.c.followed_id',
        backref=backref('followers', lazy='dynamic'),
        lazy='dynamic',
        cascade='all, delete, delete-orphan',
        single_parent=True,
    )

Модель подписчиков:

class Followers():
    id = Column(Integer, primary_key=True)
    follower_id = Column(Integer, ForeignKey('users.id'), nullable=False)
    followed_id = Column(Integer, ForeignKey('users.id'), nullable=False)

Как указать, что данные будут удаляться только в том случае, если идентификатор пользователя совпадает с идентификатором из столбца follower_id?

Одним из решений является то, что я могу удалить ForeignKey из followed_id, но мне нужно, чтобы этот столбец был связан с пользователем.

...