मैं मुझे के जीवन के लिए बनाने के लिए कई संदर्भ को समझ नहीं सकता क्यों यह आत्म निर्देशात्मक कई-से-अनेक खुश नहीं होगा:स्वयं कई कुप्पी के SQLAlchemy
minor_contains = db.Table(
'minor_contains',
db.Column('parent_id', db.Integer, db.ForeignKey('minors.id'),
primary_key=True),
db.Column('contains_id', db.Integer, db.ForeignKey('minors.id'),
primary_key=True))
class Minor(db.Model):
__tablename__ = 'minors'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String())
...
contains = db.relationship(
"Minor",
secondary=minor_contains,
primaryjoin="id == minor_contains.c.parent_id",
secondaryjoin="id == minor_contains.c.contains_id",
backref="contained_by",
lazy='dynamic')
मैं इसे कुछ दोबारा काम की कोशिश की है SQLAlchemy के लिए और Flask-SQLAlchemy के लिए मैंने जो उदाहरण देखा है, उनके आधार पर अलग-अलग तरीके हैं, लेकिन मैं लगातार समाप्त होता हूं जहां मुझे निम्न त्रुटि संदेश मिलता है या मैं कहीं अनंत लूप में समाप्त होता हूं।
ई ArgumentError: रिश्ते Minor.contains पर प्राथमिक जुड़ने की स्थिति 'minor_contains.parent_id =: parent_id_1' के लिए स्थानीय रूप से मैप किए गए विदेशी कुंजी कॉलम से जुड़े किसी भी समान समानता अभिव्यक्ति का पता नहीं लगा सका। सुनिश्चित करें कि कॉलम को संदर्भित करना विदेशीकी या विदेशीके कॉन्स्ट्रेंस से जुड़ा हुआ है, या विदेशी() एनोटेशन के साथ जुड़ने की स्थिति में एनोटेट किया गया है। '==' के अलावा तुलना ऑपरेटर को अनुमति देने के लिए, रिश्ते को viewonly = True के रूप में चिह्नित किया जा सकता है।
अद्यतन
मैं वास्तव में त्रुटि संदेश को समझने के लिए है क्योंकि यह में शामिल होने तालिका से स्तंभ से पता चलता नाकाम रहने रहा हूँ अपने आप की तुलना में किया जा रहा है, जहां में शामिल होने पर हालत की तुलना में नाबालिगों तालिका के पी होना चाहिए जुड़ने की मेज में एफके के लिए।
मैं इसका एक संस्करण भी जोड़ूंगा जो हमेशा के लिए लटकता है। आप देखेंगे कि मैं पुनर्विक्रेता परिवर्तनीय नाम रहा हूं और इस तरह से इसे फिर से लिखना और उम्मीद कर रहा हूं कि अगर मैं इसमें एक नया स्टैब लेता हूं, तो मैं किसी भी तरह से दूसरी या पांचवीं बार समझदार हो जाऊंगा।
minor_contains = db.Table(
'minor_contains',
db.Column('parent_minor_id', db.Integer, db.ForeignKey('minors.id'),
primary_key=True),
db.Column('contains_minor_id', db.Integer, db.ForeignKey('minors.id'),
primary_key=True))
class Minor(db.Model):
__tablename__ = 'minors'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String())
...
contains = db.relationship(
"Minor",
secondary=minor_contains,
primaryjoin=id==minor_contains.c.parent_minor_id,
secondaryjoin=id==minor_contains.c.contains_minor_id,
backref=db.backref("minor_contains", lazy='dynamic'))
क्या आपने कभी इसे हल किया था? मुझे भी यही समस्या हो रही है। – Ominus