मेरे पास दो मॉडल हैं जिनमें एक से दूसरे में विदेशीकी शामिल है।

class M1(models.Model):
    name = models.TextField()

class M2(models.Model):
    name = models.TextField()
    parent = models.ForeignKey(M1, related_name='children')

मैं प्रदर्शन में सुधार के लिए कोड को दोबारा कर रहा हूं।

क्या इन 2 ओआरएम प्रश्नों के बीच कोई प्रदर्शन अंतर होगा।

m1 = M1.objects.get(id=1)
children = m1.children.all()

तथा

children = M2.objects.filter(parent_id=1)
-1
Underoos 16 नवम्बर 2020, 14:13

1 उत्तर

सबसे बढ़िया उत्तर

क्या इन 2 ओआरएम प्रश्नों के बीच कोई प्रदर्शन अंतर होगा?

हां. पूर्व में, आप M1 ऑब्जेक्ट लाने के लिए एक प्रश्न बनाते हैं, और फिर आप दूसरे के लिए QuerySet बनाते हैं। यदि आप बाद में QuerySet का "उपभोग" करते हैं, तो यह इस प्रकार दो प्रश्न करेगा।

उत्तरार्द्ध में आप केवल एक क्वेरीसेट का निर्माण करते हैं, और इस प्रकार केवल एक क्वेरी बनाते हैं यदि आप क्वेरीसेट का उपभोग करते हैं।

यदि आप इस प्रकार M1 ऑब्जेक्ट में रुचि नहीं रखते हैं, तो बाद वाले का उपयोग करना बेहतर है।

1
Willem Van Onsem 16 नवम्बर 2020, 14:18