我正在代码中设置数据库,但在尝试弄清楚如何按照我想要的方式建立多对多关系时遇到困难。
基本上,我有一个User班级,其中有一个与班级的 m2m Team。事实上,一个团队有很多用户,一个用户可以是多个团队的一部分。到目前为止一切都很好。当我想向团队的用户授予“管理员”权限时,问题就出现了。
我尝试使用关联对象,但我不知道如何将关系标记为管理员。因此,我创建了第二个映射表,将团队映射到用户表中的管理员。如图所示:
Base = declarative_base()
# Many to Many relationship mapping tables
user_team_map = Table(
'user_team_map', Base.metadata,
Column('user_id', Integer, ForeignKey('users.id'), primary_key=True),
Column('team_id', Integer, ForeignKey('teams.id'), primary_key=True)
)
admin_team_map = Table(
'admin_team_map', Base.metadata,
Column('user_id', Integer, ForeignKey('users.id'), primary_key=True),
Column('team_id', Integer, ForeignKey('teams.id'), primary_key=True)
)
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
first_name = Column(String(24), nullable=False)
teams = relationship('Team', secondary=user_team_map, back_populates='users')
admin_of = relationship('Team', secondary=admin_team_map, back_populates='users')
class Team(Base):
__tablename__ = 'teams'
id = Column(Integer, primary_key=True) …Run Code Online (Sandbox Code Playgroud)