2010-11-14 7 views
9

Sto provando a creare una relazione molti-a-molti autoreferenziale (significa che Line può avere molte linee padre e molte linee figlio) in sqlalchemy come questo:Relazione autoreferenziale molti-a-molti in sqlalchemy

ma ottengo il seguente errore: sqlalchemy.exc.ArgumentError: Impossibile determinare condizione di join tra genitore/ tabelle figlio su Line.next_lines di relazione. Specificare un expressio 'primaryjoin' n. Se è presente "secondario", è necessario anche "secondaryjoin".

Sai come potrei rimediare a questo?

+0

ho provato questo: next_lines = rapporto (Associazione, backref = "prev_lines", primaryjoin = id == Association.next_id) prev_lines = relationship (Association, backref = "next_lines", primaryjoin = id == Association.prev_id) Ora non produce alcun errore. È una soluzione corretta? Oppure produrrà altri problemi? – mike

risposta

5

si dovrebbe solo bisogno di:

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

Poiché questa specifica i "next_lines" back di riferimento non v'è alcuna necessità di avere un rapporto "next_lines".

È anche possibile eseguire questa operazione utilizzando il parametro remote_side ad un rapporto: http://www.sqlalchemy.org/trac/browser/examples/adjacency_list/adjacency_list.py