Django में कई संबंधित तालिकाओं से डेटा प्रदर्शित करने के लिए, एक आंतरिक जुड़ाव अक्सर आवश्यक होता है। इस लेख में, हम यह पता लगाएंगे कि Django के ORM (ऑब्जेक्ट-रिलेशनल मैपर) का उपयोग करके आंतरिक जुड़ाव कैसे किया जाए।
मॉडल रिलेशनशिप
models.py में प्रदान किया गया कोड निम्नलिखित तालिका संबंधों को परिभाषित करता है:
इनर जॉइन चयन_संबंधित का उपयोग करना
आंतरिक जुड़ाव प्रभाव प्राप्त करने के लिए, Django की चयन_संबंधित विधि को नियोजित किया जा सकता है। यह प्राथमिक ऑब्जेक्ट के साथ-साथ संबंधित ऑब्जेक्ट का पूर्व-चयन करता है, जिससे संबंधित डेटा तक पहुंचने के लिए आवश्यक डेटाबेस क्वेरी की संख्या कम हो जाती है।
views.py में, आंतरिक जुड़ाव करने के लिए निम्नलिखित कोड का उपयोग किया जा सकता है:
pubs = publication.objects.select_related('country', 'country_state', 'city')
जेनरेटेड SQL का निरीक्षण
str(pubs.query) का उपयोग करके, जेनरेट की गई SQL क्वेरी का निरीक्षण किया जा सकता है। यह प्रदान की गई SQL क्वेरी के समान होगा, जिसमें तालिकाओं के बीच आंतरिक जोड़ होंगे:
SELECT "publication"."id", "publication"."title", ..., "country"."country_name", ... FROM "publication" INNER JOIN "country" ON ( "publication"."country_id" = "country"."id" ) INNER JOIN "countrystate" ON ( "publication"."countrystate_id" = "countrystate"."id" ) INNER JOIN "city" ON ( "publication"."city_id" = "city"."id" )
संबंधित डेटा तक पहुंच
इनर जॉइन के बाद, संबंधित डेटा को संबंधित मॉडल ऑब्जेक्ट विशेषताओं के माध्यम से एक्सेस किया जा सकता है। उदाहरण के लिए, प्रत्येक प्रकाशन के लिए शहर का नाम प्रदर्शित करने के लिए:
{% for p in pubs %} {{ p.city.city_name}} # p.city has been populated in the initial query # ... {% endfor %}
Django के चयन_संबंधित का उपयोग करके, संबंधित तालिकाओं से डेटा पुनर्प्राप्त करने, डेटाबेस क्वेरी को कम करने और प्रदर्शन में सुधार करने के लिए आंतरिक जुड़ाव को कुशलतापूर्वक कार्यान्वित किया जा सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3