मैं एक मोड़ Django क्वेरीसमूह को छानने के साथ है (?):Django objects.filter() values_list() बनाम __in क्वेरी के लिए अजगर सूची समझ
ipdb> MagazineIssue.objects.filter(id__in=l_magazines.values_list('id'))
Out[0]: []
या
ipdb> MagazineIssue.objects.filter(id__in=[l_magazine.id for l_magazine in l_magazines])
Out[0]: [<MagazineIssue: Architecture Australia, Jan 1995 (#1)>]
और
ipdb> l_magazines.values_list('id')
Out[0]: [(1,)]
ipdb> [l_magazine.id for l_magazine in l_magazines]
Out[0]: [1]
तो, value_list() का उपयोग कैसे करें? (उत्पादन के लिए):
[1]
या पाइथन सूची समझ 'जाने का रास्ता' है?
क्या कोई प्रदर्शन अंतर है? – Marcin
विशाल। values_list तेज़ तेज़ है। फ्लैट = सत्य इसे और भी तेज बनाता है क्योंकि पायथन को सूची में सभी ऑब्जेक्ट्स को तुरंत चालू करने की आवश्यकता नहीं होती है, केवल डेटाबेस मान लौटाए जाते हैं। स्पष्टीकरण के लिए –
, यह तेज़ है क्योंकि Django पहचानता है कि हम एक क्वेरीसेट को क्वेरीसेट के लिए तर्क के रूप में उपयोग कर रहे हैं, इसलिए यह उन्हें एक ही क्वेरी में जोड़ता है - यह पहले सूची में 'value_list' क्वेरीसेट का मूल्यांकन नहीं करता है! – Anentropic