2010-11-14 5 views
9

Ich versuche, eine selbstreferentielle Viele-zu-viele-Beziehung zu machen (es bedeutet, dass Line viele Elternlinien und viele Kindlinien haben kann) in sqlalchemy wie folgt:Viele-zu-viele selbstreferenzielle Beziehung in sqlalchemy

Aber ich erhalte den folgenden Fehler: sqlalchemy.exc.ArgumentError: Könnte bestimmen nicht Bedingung zwischen Eltern beitreten/ Kind Tabellen auf Beziehung Line.next_lines. Geben Sie ein 'primaryjoin' expressio n an. Wenn 'sekundär' vorhanden ist, wird 'sekundäres Verbinden' ebenfalls benötigt.

Wissen Sie, wie ich das beheben könnte?

+0

ich das versucht: next_lines = Beziehung (Association, backref = "prev_lines", primaryjoin = id == Association.next_id) prev_lines = Beziehung (Assoziation, backref = "next_lines", primaryjoin = id == Assoziation.prev_id) Jetzt erzeugt es keinen Fehler. Ist es eine richtige Lösung? Oder wird es zu anderen Problemen führen? – mike

Antwort

5

Sie sollten nur brauchen:

prev_lines = relationship(Association, backref="next_lines", primaryjoin=id==Association.prev_id)

Da dies legt die „next_lines“ zurück Referenz besteht keine Notwendigkeit, eine „next_lines“ Beziehung zu haben.

Sie können dies auch tun, um die remote_side Parameter auf eine Beziehung mit: http://www.sqlalchemy.org/trac/browser/examples/adjacency_list/adjacency_list.py