使用SQLAlchemy,我無法弄清楚如何映射下列關係:用戶可以被其他用戶「跟蹤」,從而成爲「追隨者」的「領導者」。SQLAlchemy關係加入多個外鍵
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key = True)
followers = relationship('User', primaryjoin = 'and_(User.id == UserFollower.leader_id)', cascade = 'all')
leaders = relationship('User', primaryjoin = 'and_(User.id == UserFollower.follower_id)', cascade = 'all')
class UserFollower(Base):
__tablename__ = 'users_followers'
leader_id = Column(Integer, ForeignKey('users.id'), primary_key = True)
follower_id = Column(Integer, ForeignKey('users.id'), primary_key = True)
follower = relationship('User', uselist = False, foreign_keys = [ follower_id ])
leader = relationship('User', uselist = False, foreign_keys = [ leader_id ])
從文檔我的印象中,這樣的聲明將有
some_user.followers
執行上「users.id = users_followers.leader_id聯接的「用戶」和「users_followers」表'where'user.id = some_user.id'。
但是,這會產生錯誤(類似於How to specify table relationships in SQLAlchemy with multi-level/multiple joins?)。儘管提出的解決方案允許我解決此問題,但它可以防止使用SQLAlchemy關係的「級聯」屬性,因此在刪除用戶時,相應的UserFollower對象也會被刪除。
總結:我怎麼能有關係加入到表的多個外鍵指的是相同的密鑰和保存仍然級聯(刪除)?
事實上,這是一個直接應用。我完全錯過了。謝謝! – OnMyLittleDuck