zowel de Group.users als de Group.users_dynamic relaties proberen het feit te verzoenen dat de groep wordt verwijderd, samen met het kunnen beheren van de User()
objecten waarnaar ze verwijzen; één relatie slaagt terwijl de tweede mislukt, omdat de rijen in de associatietabel al waren verwijderd. De eenvoudigste oplossing is om op één na alle identieke relaties als alleen-lezen te markeren:
class Group(Base):
__tablename__ = 'groups'
id = Column(Integer, primary_key=True)
users = relationship('User', secondary=users_groups, lazy='select', backref='groups')
users_dynamic = relationship('User', viewonly=True, secondary=users_groups, lazy='dynamic')
als je nog steeds wilt dat beide relaties een zekere mate van mutaties afhandelen, moet je dit voorzichtig doen, aangezien SQLAlchemy niet weet hoe wijzigingen in twee relaties tegelijkertijd moeten worden gecoördineerd, dus conflicten zoals deze kunnen blijven bestaan gebeuren (zoals dubbele invoegingen, enz.) als u equivalente mutaties maakt op beide relaties. Om het "verwijderen"-probleem zelf op te lossen, kunt u ook proberen Group.users_dynamic in te stellen op passive_deletes=True:
class Group(Base):
__tablename__ = 'groups'
id = Column(Integer, primary_key=True)
users = relationship('User', secondary=users_groups, lazy='select', backref='groups')
users_dynamic = relationship('User', passive_deletes=True, secondary=users_groups, lazy='dynamic')