oba vztahy Group.users a Group.users_dynamic se pokoušejí uvést do souladu se skutečností, že skupina je smazána, a zároveň mohou spravovat User()
předměty, na které odkazují; jeden vztah je úspěšný, zatímco druhý selže, protože řádky v tabulce přidružení již byly odstraněny. Nejpřímějším řešením je označit všechny identické vztahy kromě jednoho jako pouze pro zobrazení:
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')
pokud stále chcete, aby oba vztahy zvládaly určitý stupeň mutací, musíte to udělat opatrně, protože SQLAlchemy neví, jak koordinovat změny ve dvou vztazích současně, takže konflikty jako tento mohou pokračovat dojde (jako dvojité vložky atd.), pokud provedete ekvivalentní mutace na obou vztazích. Abyste se o problém „smazání“ postarali sami, můžete také zkusit nastavit Group.users_dynamic na pasivní_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')