Nested urls are not working with Django REST framework -
url.py रूटर.रिजिस्टर (r'Costumers ', CostumerViewSet, base_name =' costumer ')। पंजीयक ( R'Agreements ', समझौताViewSet, base_name =' अनुबंध ', parents_query_lookups = [' costumer '])। । पंजीयन (r'programs ', ProgramViewSet, base_name =' प्रोग्राम्स ', माता-पिता_लक्षुओं = [' अनुबंध ']), मॉडलज क्लास कॉस्ट्यूमर (मॉडेल। मॉडल): कंपनी_नाम = मॉडल। खरीफिल्ड (अधिकतम_ लैंग = 300) सप्लायर = मॉडल। ForeignKey (आपूर्तिकर्ता) वर्ग समझौते (models.Model): agreement_name = models.CharField (max_length = 300) प्रोग्राम = models.ManyToManyField (प्रोग्राम, = 'Programs_in_Agreement' के माध्यम से) costumer = models.ForeignKey (Costumer) क्लास प्रोग्राम (models.Model ): Program_name = models.CharField (max_length = 300) वर्ग Programs_in_Adreement (models.Model): प्रोग्राम्स = मॉडेल। फ़ॉरइन्गकी (प्रोग्राम) समझौता = मॉडल। फ़ॉरइन्गकी (एग्रीमेंट) मैं इस पेज / एपीआई / वी 1 / कॉस्ट्यूमर / 1 प्राप्त करने की कोशिश कर रहा हूं / अनुबंध / 1 / कार्यक्रम / और मुझे यह त्रुटि मिली है "^ कॉस्ट्यूमर / (? पी & lt; parent_lookup_agreement & gt; [^ /।] +) / अनुबंध / (? पी & lt; parent_lookup_agreement & gt; [^ /।] +) / प्रोग्राम / $ "मान्य रेगुलर एक्सप्रेशन नहीं है: ग्रुप 2 के रूप में समूह नाम 'पेरेंट_लुकुप_ऐब्रिएन्ट' का पुनः परिभाषा; समूह 1 था
प्रोग्राम और समझौतों के बीच संबंध एम 2 एम है और अनुबंध और कॉस्टियर के बीच का संबंध एम 21 क्या मुझे कोई मदद कर सकता है?
आप रूटर घोंसले के शिकार हैं, जिसका अर्थ है कि आप नेस्टेड रूटर प्लगिन में से एक का उपयोग कर रहे हैं समस्या ये है कि आप पिछले रजिस्टर
कॉल के लिए सभी लुकअप फ़ील्ड्स नहीं दे रहे हैं।
ऐसा रिश्ते जो ऐसा लगता है कि आप प्राप्त करने की कोशिश कर रहे हैं
< ब्लॉकक्ॉट>प्रोग्राम -> अनुबंध -> कॉस्ट्यूमर
और रूटर उत्पन्न कर रहे हैं
कॉस्ट्यूमर्स - एग्रीमेंट -> कॉस्टमर्स / प्रोग्राम -> अनुबंध -> कॉस्ट्यूमर
जहां ->
संकेतों का संकेत दिया जा रहा है parents_query_lookups
में प्रवेश करके पंजीकरण करते समय लुकअप मैन्युअल रूप से प्रदान किया जायेगा यह महत्वपूर्ण है, क्योंकि अन्यथा प्लगइन को लगता है कि लुकअप क्या है, और यह गलत होगा। रूटरों के नेस्टिंग में लुकअप नहीं बनाए जाते हैं, इसलिए रूटर ए पर एक लुकअप को राउटर बी में नहीं दिया जाएगा, यह रूटर बी पर भी दोहराया जाना चाहिए ।
तो रूटर को पंजीकृत करते समय आपको क्या करना चाहिए, माता-पिता के लुकअप में हो रहा है नीचे दिए गए स्निपेट को काम करना चाहिए:
राउटर. पंजीयक (r'Costumers ', CostumerViewSet, base_name =' costumer ')। रजिस्ट्री (r'Agreements', AgreementViewSet, base_name = 'अनुबंध', parents_query_lookups = [ 'costumer'])। । रजिस्ट्री (r'Programs, ProgramViewSet, base_name = 'Programs', parents_query_lookups = ['agreement__costumer', 'agreement'])
agreement__costumer अंतिम कॉल के लिए
parents_query_lookups
में। इससे प्लगइन URL के उस भाग के लिए लुकअप फ़ील्ड को भरने की अनुमति देता है, जिसमें डुप्लिकेट समूह को दिखाने से रोकता है।
Comments
Post a Comment