Group.users और Group.users_dynamic संबंध दोनों इस तथ्य को समेटने का प्रयास कर रहे हैं कि User()
को प्रबंधित करने में सक्षम होने के साथ-साथ समूह को हटाया जा रहा है। जिन वस्तुओं का वे उल्लेख करते हैं; एक संबंध सफल होता है जबकि दूसरा विफल रहता है, क्योंकि संबद्धता तालिका में पंक्तियाँ पहले ही हटा दी गई थीं। सबसे सीधा समाधान है कि केवल एक समान संबंधों को छोड़कर सभी को केवल देखने के लिए चिह्नित किया जाए:
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')
यदि आप अभी भी चाहते हैं कि दोनों संबंध कुछ हद तक उत्परिवर्तन को संभालें, तो आपको इसे सावधानी से करने की आवश्यकता होगी क्योंकि SQLAlchemy एक ही समय में दो रिश्तों में परिवर्तनों के बीच समन्वय करना नहीं जानता है, इसलिए इस तरह के संघर्ष जारी रह सकते हैं हो (जैसे डबल इंसर्ट, आदि) यदि आप दोनों रिश्तों पर समान परिवर्तन करते हैं। केवल "हटाएं" समस्या का स्वयं ही ध्यान रखने के लिए, आप Group.users_dynamic को निष्क्रिय_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')