Создайте много ко многим на одном столе
Flask-SQLAlchemy даетпример о том, как создать отношения многих ко многим. Это делается между двумя разными таблицами.
Можно ли создать отношения «многие ко многим» на одном столе? Например, у сестры может быть много сестер, у которых также будет много сестер. Я пытался:
girl_sister_map = db.Table('girl_sister_map',
db.Column('girl_id',
db.Integer,
db.ForeignKey('girl.id')),
db.Column('sister_id',
db.Integer,
db.ForeignKey('girl.id')))
class Girl(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
sisters = db.relationship('Girl',
secondary=girl_sister_map,
backref=db.backref('othersisters', lazy='dynamic'))
Но когда я пытаюсь добавить сестру к девушке, я получаю:
sqlalchemy.exc.AmbiguousForeignKeysError: Не удалось определить условие соединения между родительскими / дочерними таблицами в отношении Girl.sisters - существует несколько путей внешнего ключа, связывающих таблицы через вторичную таблицу girl_sister_map. Укажите аргумент foreign_keys, предоставляющий список тех столбцов, которые должны учитываться как ссылки на внешние ключи из вторичной таблицы для каждой из родительской и дочерней таблиц.
Это возможно? Как я должен это делать?