"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Django ORM के चयन_संबंधित बनाम प्रीफ़ेच_संबंधित का उपयोग कब करें?

Django ORM के चयन_संबंधित बनाम प्रीफ़ेच_संबंधित का उपयोग कब करें?

2024-11-14 को प्रकाशित
ब्राउज़ करें:620

When to Use Django ORM\'s select_related vs. prefetch_related?

Django ORM के चयन_संबंधित और प्रीफ़ेच_संबंधित के बीच अंतर

Django ORM में, चयन_संबंधित और प्रीफ़ेच_संबंधित तरीके डेटाबेस क्वेरी में संबंधों के प्रबंधन के लिए अलग-अलग उद्देश्यों की पूर्ति करते हैं।

select_संबंधित

Django की चयन_संबंधित विधि SQL जॉइन करके डेटाबेस क्वेरी के दौरान संबंधित मॉडल डेटा प्राप्त करती है। यह संबंधित मॉडलों के चयनित फ़ील्ड को कुशलतापूर्वक पुनः प्राप्त करता है, जिससे बाद के प्रश्नों की आवश्यकता कम हो जाती है। यह दृष्टिकोण विशेष रूप से विदेशी कुंजी या OneToOneField कनेक्शन वाले संबंधों के लिए उपयुक्त है। इसके बजाय, यह संबंधित मॉडलों को पुनः प्राप्त करने के लिए अलग-अलग क्वेरी निष्पादित करता है। फिर डेटा को पायथन में "ज्वाइन" किया जाता है। यह विधि कईToManyFields या रिवर्स विदेशी कुंजी कनेक्शन वाले रिश्तों के लिए फायदेमंद है।

उदाहरण

निम्न मॉडल सेटअप पर विचार करें:

वर्ग लेखक (मॉडल.मॉडल): नाम = मॉडल.CharField(max_length=100) क्लास बुक(मॉडल.मॉडल): लेखक = मॉडल.फॉरेनकी(लेखक)

एक लेखक को उसकी संबंधित पुस्तकों के साथ चयन_संबंधित का उपयोग करके लाने के लिए:

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    author = models.ForeignKey(Author)
prefetch_related का उपयोग करके किसी लेखक को उनकी संबंधित पुस्तकों के साथ लाने के लिए:

author = Author.objects.select_related('book_set').get(pk=1)
for book in author.book_set.all():
    print(book.title)
हालांकि दोनों विधियां संबंधित डेटा पुनर्प्राप्त करती हैं, लेकिन चयन_संबंधित सीमित अनावश्यक कॉलम वाले एकल-ऑब्जेक्ट संबंधों के लिए इष्टतम है। इसके विपरीत, डेटाबेस संचार को कम करने के लिए कई-से-कई संबंधों या विरल रिवर्स विदेशी कुंजी संबंधों के लिए प्रीफ़ेच_संबंधित को प्राथमिकता दी जाती है। हालाँकि, इसके परिणामस्वरूप डेटा के पायथन प्रतिनिधित्व में डुप्लिकेट ऑब्जेक्ट हो सकते हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुनर्मुद्रित है: 1729672608 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3