python - 多对多双向的方向是什么?
问题描述
我有一个“多对多”双向,但是当我为组和用户创建映射数据时,它只适用于 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
解决方案
推荐阅读
- google-bigquery - 从配置文件中寻找 BQ SQL builder
- node.js - 赛普拉斯 UI 测试因等待浏览器而超时
- unity3d - 在 Unity 中为对象的不同部分分配不同颜色的着色器
- php - 如何将多个数组项与一个数组项进行比较以进行猜词脚本
- mysql - 如何仅对特定行的值求和?
- systemc - 端口未绑定 SystemC (E112)
- css - 移动设备和桌面设备不会返回卡背面的左箭头
- symfony - 检查网络服务器是否正在运行,并且没有防火墙阻止 Facebook 的爬虫 Symfony
- r - 由于压缩文件夹中的名称过长,解压失败
- python - 我在 Python 中遇到问题,我相信 openpyxl