首页 > 解决方案 > 多对多双向的方向是什么?

问题描述

我有一个“多对多”双向,但是当我为组和用户创建映射数据时,它只适用于 1 个方向。

class Groups(db.Model):
    __tablename__ = 'GROUPS'
    grpid = db.Column(db.String, primary_key=True)
    groups = db.relationship("GroupUsers", back_populates="profiles")

class Profiles(db.Model):
    __tablename__ = 'PROFILES'
    profileid = db.Column(db.String, primary_key=True)
    profiles = db.relationship("GroupUsers", back_populates="groups")

class GroupUsers(db.Model):
    __tablename__ = 'GRPUSERS'
    autoid = db.Column(db.String)
    brid = db.Column(db.String)
    description = db.Column(db.String)
    grpid = db.Column(db.String, db.ForeignKey("GROUPS.grpid"), primary_key=True)
    profileid = db.Column(db.String, db.ForeignKey("PROFILES.tlid"), primary_key=True)

    groups = db.relationship("Groups", back_populates="profiles")
    profiles = db.relationship("Profiles", back_populates="groups")

# CREATE MAPPING
groups = Groups()
group = groups.get_by_grpid(grpid=grid)
profiles = Profiles()
profile = profiles.get_by_profileid(profileid=profileid)
groupuser = GroupUsers(autoid=GroupUsers.get_max_autoid(),brid=profile.brid)

# IT'S WORK. CAN CREATE PRIMARY KEY TO GRPUSERS
# groupuser.tlprofiles = profile
# group.profiles.append(groupuser)
# profile.save()

# IT ISN'T WORK WITH ERROR BELOW
groupuser.tlgroups = group
profile.groups.append(groupuser)
group.save()

当我从配置文件创建映射时,它会将主键添加到GroupUser类,但是当我从组创建映射时,它无法为GroupUser有错误的类创建主键。

Can't update table GRPUSERS using NULL for primary key value on column GRPUSERS.profileid

标签: pythonflasksqlalchemymany-to-manyflask-sqlalchemy

解决方案


推荐阅读