小编Jam*_*sis的帖子

如何在 SQLAlchemy 中正确处理这种多对多关系?收到“检测到双向属性冲突”

我正在代码中设置数据库,但在尝试弄清楚如何按照我想要的方式建立多对多关系时遇到困难。

基本上,我有一个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)

python postgresql sqlalchemy relational-database

1
推荐指数
1
解决办法
1530
查看次数