Erstellen Sie viele zu viele auf einem Tisch

Flask-SQLAlchemy gibt eineBeispiel wie man eine Beziehung von vielen zu vielen schafft. Dies geschieht zwischen zwei verschiedenen Tabellen.

Ist es möglich, eine Viele-zu-Viele-Beziehung in derselben Tabelle zu erstellen? Zum Beispiel kann eine Schwester viele Schwestern haben, die auch viele Schwestern haben würden. Ich habe versucht:

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'))

Aber wenn ich versuche, einem Mädchen eine Schwester hinzuzufügen, bekomme ich:

sqlalchemy.exc.AmbiguousForeignKeysError: Die Verknüpfungsbedingung zwischen über- und untergeordneten Tabellen in der Beziehung Girl.sisters konnte nicht ermittelt werden. Es gibt mehrere Fremdschlüsselpfade, die die Tabellen über die sekundäre Tabelle 'girl_sister_map' verbinden. Geben Sie das Argument 'foreign_keys' an und geben Sie eine Liste der Spalten an, die einen Fremdschlüsselverweis von der Sekundärtabelle zu jeder der übergeordneten und untergeordneten Tabellen enthalten sollen.

Ist das möglich? Wie soll ich das machen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage