При попытке удалить строку из таблицы task_details появляется следующая ошибка:
File "D:\My\venv\lib\site-packages\sqlalchemy\orm\relationships.py", line 1785, in _check_cascade_settings
% self)sqlalchemy.exc.ArgumentError: On User.tasks, delete-orphan cascade is not supported on a many-to-many or many-to-one relationship when single_parent is not set. Set single_parent=True on the relationship().
У меня есть таблица user_details и таблица task_details. между этими двумя отношениями много-много. Существует таблица ассоциации под названием TaskMapping, в которой есть сопоставление user_id и task_id. Вы можете проверить настройки базы данных ниже:
TaskMapping = Table('TaskMapping', Base.metadata,
Column('user_id', Integer, ForeignKey('user_details.user_id')),
Column('task_id', Integer, ForeignKey('task_details.task_id', ondelete='CASCADE')))
class User(Base):
__tablename__ = 'user_details'
user_id = Column(Integer, Sequence('user_id_seq', start=1001, increment=1), primary_key=True)
user_name = Column(String(250), nullable=False)
email = Column(String(250), nullable=False)
tasks = relationship('Tasks', backref='user_details', lazy = 'dynamic',
secondary=TaskMapping)
class Tasks(Base):
__tablename__ = 'task_details'
task_id = Column(Integer, Sequence('task_id_seq', start=1001, increment=1), primary_key=True)
description = Column(String(250))
hrs = Column(Float)
percent_complete = Column(Float, default=0.0)
users = relationship('User', backref='task_details', lazy = 'dynamic',cascade="all, delete-orphan",
single_parent=True, secondary=TaskMapping)
Я открыт для редизайна схемы.