Crie muitos para muitos em uma tabela
Flask-SQLAlchemy dá umaexemplo de como criar um relacionamento muitos para muitos. Isso é feito entre duas tabelas diferentes.
É possível criar um relacionamento muitos para muitos na mesma tabela? Por exemplo, uma irmã pode ter muitas irmãs, que também teriam muitas irmãs. Eu tentei:
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'))
Mas quando eu tento adicionar uma irmã a uma garota eu recebo:
sqlalchemy.exc.AmbiguousForeignKeysError: Não foi possível determinar a condição de junção entre as tabelas pai / filho no relacionamento Girl.sisters - existem vários caminhos de chave estrangeira ligando as tabelas via tabela secundária 'girl_sister_map'. Especifique o argumento 'foreign_keys', fornecendo uma lista dessas colunas que devem ser contadas como contendo uma referência de chave estrangeira da tabela secundária para cada uma das tabelas pai e filho.
Isso é possível? Como devo estar fazendo isso?