我与关联表有一个简单的多对多关系:
以下数据:
匹配: 用户:
users_mathces:
一个用户可以玩很多比赛
和
一场比赛最多可涉及两名用户
我想在“匹配”和“用户”类中实现正确的关系
users_matches_table = Table('users_matches', Base.metadata,
Column('match_id', Integer, ForeignKey('matches.id', onupdate="CASCADE", ondelete="CASCADE")),
Column('user_id', Integer, ForeignKey('users.id', onupdate="CASCADE", ondelete="CASCADE"))
)
class Match(Base):
__tablename__ = 'matches'
id = Column(Integer, primary_key=True)
#relations
user1 = relationship('User', secondary = users_matches_table)
user2 = relationship('User', secondary = users_matches_table)
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
username = Column(String)
#relations
matches = relationship('Match', secondary=users_matches_table)
但显然,Match.user1和Match.user2关系应该有一些规则,这会使一个用户与另一个用户有所不同,所以我可以获得match1.user1
和match1.user2
,但他们不会引用对同一个用户。
任何想法如何做到这一点?
答案 0 :(得分:1)
我担心你不能这样做。我建议您只有一个关系users
并验证插入查询。