2010-11-14 18 views
9

Estoy tratando de establecer una relación autorreferencial de muchos a muchos (significa que Line puede tener muchas líneas parentales y muchas líneas secundarias) en sqlalchemy como este:Relación autorreferencial de muchos a muchos en sqlalchemy

pero me da el siguiente error: sqlalchemy.exc.ArgumentError: no se pudo determinar condición de unión entre padres/ tablas secundarias en relación Line.next_lines. Especifique una expressio 'primaryjoin' n. Si está presente 'secundario', también se necesita 'unión secundaria'.

¿Sabes cómo podría remediar esto?

+0

He intentado esto: next_lines = relación (Asociación, backref = "prev_lines", primaryjoin = id == Association.next_id) prev_lines = relación (Asociación, backref = "next_lines", primaryjoin = id == Association.prev_id) Ahora no produce ningún error. ¿Es una solución correcta? ¿O producirá otros problemas? – mike

Respuesta

5

sólo debe necesitar:

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

Dado que esto especifica los "next_lines" referencia hacia atrás que no hay necesidad de tener una relación "next_lines".

También puede hacerlo utilizando el parámetro remote_side a una relación: http://www.sqlalchemy.org/trac/browser/examples/adjacency_list/adjacency_list.py

Cuestiones relacionadas