2010-11-14 41 views
9

Tôi đang cố gắng tạo mối quan hệ nhiều-nhiều-tự tham chiếu (có nghĩa là Đường có thể có nhiều dòng cha và nhiều dòng con) trong sqlalchemy như sau:Mối quan hệ tự tham chiếu nhiều người trong sqlalchemy

Nhưng tôi nhận được lỗi sau: sqlalchemy.exc.ArgumentError: không thể xác định điều kiện join giữa phụ huynh/ bảng con trên Line.next_lines mối quan hệ. Chỉ định biểu thức 'primaryjoin' expressio n. Nếu 'phụ' là hiện tại, 'phụ tham gia' là cần thiết là tốt.

Bạn có biết cách tôi có thể khắc phục điều này không?

+0

Tôi cố gắng này: next_lines = mối quan hệ (Hiệp hội, backref = "prev_lines", primaryjoin = id == Association.next_id) prev_lines = mối quan hệ (Hiệp hội, backref = "next_lines", primaryjoin = id == Association.prev_id) Bây giờ nó không tạo ra bất kỳ lỗi nào. Đó có phải là giải pháp đúng không? Hay nó sẽ tạo ra các vấn đề khác? – mike

Trả lời

5

Bạn chỉ nên cần:

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

Vì đây chỉ rõ "next_lines" trở lại tham chiếu không cần phải có một "next_lines" mối quan hệ.

Bạn cũng có thể làm điều này bằng cách sử dụng tham số remote_side tới một mối quan hệ: http://www.sqlalchemy.org/trac/browser/examples/adjacency_list/adjacency_list.py

Các vấn đề liên quan