SQLAlchemy的。 1列的2种不同关系

时间:2015-06-22 08:45:07

标签: python sqlalchemy

我与关联表有一个简单的多对多关系: enter image description here

以下数据:

匹配:enter image description here 用户:enter image description here

users_mathces:enter image description here

一个用户可以玩很多比赛 和
一场比赛最多可涉及两名用户 我想在“匹配”和“用户”类中实现正确的关系

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.user1match1.user2,但他们不会引用对同一个用户。 任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:1)

我担心你不能这样做。我建议您只有一个关系users并验证插入查询。