2010-11-14 15 views
5

मेरे पास एक django प्रोजेक्ट है जिसमें दो ऐप्स हैं, एक AppA और AppB है। अब AppA मैं एक get_object_or_404(ModelA, pk=prim_id) करते हैं जब यह ModelA पता चलता है, एक मॉडल ModelA जो AppB में मॉडल ModelB द्वारा संदर्भित है, AppA के लिए modelA = models.ForeignKey(ModelA, related_name='tricky')विदेशी के द्वारा Django रिवर्स लुकअप

मेरे विचार में

अभी सेवा का उपयोग किया गया है। तो मैं सभी ModelB एस प्राप्त करना चाहता हूं जिनकी विदेशी कुंजी ModelA पर इंगित करती है।

प्रलेखन कहते हैं मैं एक mb = ModelB.objects.get(pk=prim_id) तो mb.modela_set.all()

करना चाहिए लेकिन, यह mb.modela_set पर विफल रही है, और यह "ModelB object has no attribute 'suchsuch'" कहते हैं। नोटिस मैंने related_name फ़ील्ड को विदेशीकी में जोड़ा, इसलिए मैंने इसके साथ भी कोशिश की, जिसमें mb.tricky.all() और mb.tricky_set.all() शामिल नहीं थे।

ओह, और मैंने AppA के लिए एक अलग प्रबंधक निर्दिष्ट किया है जहां मैं objects = MyManager() करता हूं जो सामान्य क्वेरी देता है लेकिन फ़िल्टर के साथ लागू होता है।

समस्या क्या हो सकती है? ModelB एस ModelA संदर्भित करने का पसंदीदा तरीका क्या है?

+0

आह, मैंने गड़बड़ कर दी है, मॉडल मॉडल को संदर्भित करने के लिए ModelA.tricky.all() कहा जाना चाहिए ... मॉडलबी.tricky.all() गह के बजाय मैं क्या था। – rapadura

+0

यदि आपको लगता है कि आपने अपना प्रश्न गलत बताया है तो कृपया इसे सही होने के लिए संपादित करें। आप अपना प्रबंधक कोड भी शामिल कर सकते हैं! –

+0

@lazerscience, नहीं मैंने इसे सही ढंग से वर्णित किया। – rapadura

उत्तर

4

तो ForeignKey है, जैसा कि आप ModelB में वर्णन करते हैं और आप mb = ModelB.objects.get(pk=prim_id) करना तो modela विशेषता के लिए ऊपर देखो एक रिवर्स देखने नहीं है। आप बस mb.modela के माध्यम से संबंधित ऑब्जेक्ट तक पहुंच सकते हैं!

+1

हां, लेकिन मैं मॉडल बी के मॉडल बी के रेफरेंस प्राप्त करने के लिए ModelB.modela_set.all() करने की कोशिश कर रहा था। मैंने http://docs.djangoproject.com/en/dev/topics/db/queries/ (रिवर्स क्वेरीज बनाने) पर प्रलेखन में ध्यान नहीं दिया था कि मॉडल ए (दस्तावेज़ में ब्लॉग) के पास किसी अन्य मॉडल के लिए विदेशीकी फ़ील्ड नहीं था। इसके बजाय यह मॉडल ए (ब्लॉग) है जिसमें एक अन्य मॉडल से सभी संदर्भों का FOO_set.all() है। मैं आपका जवाब स्वीकार करता हूं क्योंकि यह अभी भी सही है और दूसरों के लिए ढूंढना है। – rapadura

संबंधित मुद्दे