2010-11-14 11 views
9

मैं एक आत्म निर्देशात्मक कई-से-अनेक संबंध बनाने के लिए (इसका मतलब है कि लाइन में कई माता पिता लाइनों और कई बच्चे लाइनों हो सकता है) इस तरह SQLAlchemy में कोशिश कर रहा हूँ में आत्म-निर्देशात्मक संबंध: sqlalchemy.exc.ArgumentError:कई-से-अनेक SQLAlchemy

लेकिन मैं निम्नलिखित त्रुटि मिलती है माता-पिता/संबंध Line.next_lines पर बच्चे तालिकाओं के बीच शर्त में शामिल होने के निर्धारित नहीं कर सका। निर्दिष्ट करें एक 'primaryjoin' n expressio। यदि 'माध्यमिक' मौजूद है, 'secondaryjoin' के रूप में अच्छी तरह से की जरूरत है।

तुम्हें पता है मैं यह कैसे सुधार सकता है?

+0

मैं इस कोशिश की:

तुम भी एक रिश्ता करने के लिए remote_side पैरामीटर का उपयोग कर ऐसा कर सकते हैं next_lines = संबंध (एसोसिएशन, backref = "prev_lines", primaryjoin = आईडी == Association.next_id) prev_lines = रिश्ते (एसोसिएशन, backref = "next_lines", primaryjoin = आईडी == Association.prev_id) अब यह किसी भी त्रुटि का उत्पादन नहीं करता। क्या यह एक सही समाधान है? या यह अन्य समस्याओं का उत्पादन करेगा? – mike

उत्तर

5

तुम बस जरूरत है चाहिए:

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

चूंकि यह निर्दिष्ट करता है "next_lines" वापस संदर्भ एक "next_lines" रिश्ता है की कोई जरूरत नहीं है। http://www.sqlalchemy.org/trac/browser/examples/adjacency_list/adjacency_list.py