【发布时间】:2020-04-12 10:39:36
【问题描述】:
我正在做一个项目,包括链接两个类:用户和组。
一个用户可以在一些组中,每个组可以有一些用户。
所以,我创建了第三个表:group_guest,用于保存 user_id 和 group_id。
当我创建 user1、user2、group1 和 group2 时,我可以将 group1 和 group2 添加到 user1。
并将 group1 添加到 user2
问题:那么我不能只从 user1 中删除 group1 并且删除 group1 不好:user2 没有更多的组:/
我几乎尝试了所有组合:级联、反向引用、删除孤儿...
如果有人作为一个想法......我应该修改模型吗?
我将不胜感激!
代码:
from app import db
from flask_login import UserMixin
group_guest = db.Table('group_guest',
db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
db.Column('group_id', db.Integer, db.ForeignKey('group.id'))
)
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
group_guest_group_id = db.relationship(
"Group",
secondary=group_guest,
back_populates="group_guest_user_id",
cascade="all, delete",
lazy='dynamic'
)
class Group(db.Model):
id = db.Column(db.Integer, primary_key=True)
entitled = db.Column(db.String(64))
group_guest_user_id = db.relationship(
"User",
secondary=group_guest,
back_populates="group_guest_group_id",
lazy='dynamic'
)
然后:
user1.group_guest_group_id.remove(group1)
db.session.commit()
user1.guested_group().all()
它应该(在我看来)只返回 group2 但它返回两个
【问题讨论】:
标签: python database sqlalchemy many-to-many flask-sqlalchemy