如何使用关系从sqlalchemy的关联表中删除映射的子表



文档说明:

一对多或多对多关系的映射导致通过父实例上的属性可访问的值集合。默认情况下,这个集合是一个列表

所以我有一个带有角色的用户,我可以使用user访问它。role和user.roles.append()方法工作得很好,但是我不能删除所有映射条目。我试着:

user.roles = []

我也尝试了clear()方法和remove()在循环中,但我总是得到

sqlalchemy.orm.exc.FlushError: Can't flush None value found in collection Users.roles

这是我的表关系的例子

class Users(sa.Model):
__tablename__ = 'users'
id = Column(Integer, primary_key=True, autoincrement=True)
login = Column(String(50), unique=False)
roles = relationship('Roles', secondary='user_roles_map',
cascade='all, delete')

class Roles(sa.Model):
__tablename__ = 'roles'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(40), unique=True)

class UserRolesMap(sa.Model):
__tablename__ = 'user_roles_map'
id_seq = Sequence(__tablename__ + "_id_seq")
id = Column(Integer(), id_seq, server_default=id_seq.next_value(),
unique=True, nullable=False)
user_id = Column(
Integer, ForeignKey('users.id'),
primary_key=True)
role_id = Column(
Integer, ForeignKey('roles.id'),
primary_key=True)

是否可以通过访问父条目的roles属性来删除所有条目?

调用flush()后需要用户。角色= []

相关内容

  • 没有找到相关文章

最新更新