some_queryset.count()
या {{some_queryset.count}}
आपके टेम्पलेट में।
len
का उपयोग न करें, यह बहुत कम कुशल है। डेटाबेस उस काम को करना चाहिए। count()
के बारे में प्रलेखन देखें।
हालांकि, यदि आप रिकॉर्ड पर फिर से प्रयास करने की योजना बना रहे हैं, तो आप len
का उपयोग कर सकते हैं, जिसमें क्वेरीसेट को हल करने और परिणामी पंक्तियों को मुख्य स्मृति में निवासी बनाने में शामिल होगा - यह बर्बाद नहीं होगा क्योंकि आप इन पंक्तियों को वैसे भी देखेंगे। डीबी कनेक्शन विलंबता के आधार पर यह वास्तव में तेज़ हो सकता है, लेकिन आपको हमेशा मापना चाहिए।
स्रोत
2012-05-22 03:26:40
एक फिल्टर कुछ भी पर लेन() कॉल करने के लिए 'length' कहा जाता है। '{{any_iterable | length}}' –
@ यूजी 'टोमिता' टोमिता इस के लिए आप 'some_queryset.all | length' का उपयोग करेंगे? एसक्यूएल जेनरेट के मामले में यह इष्टतम है? 'Some_queryset.count' सभी मॉडल फ़ील्ड चुनने के बजाय 'SELECT COUNT (*)' का उपयोग करता है। मुझे नहीं पता कि यह प्रदर्शन के संदर्भ में कितना महत्वपूर्ण है, मुझे लगता है कि एक बड़ी क्वेरी_सेट के साथ कुछ महत्वपूर्ण हो सकता है? – AJP
@ एजेपी हां। अगर आपको केवल गिनती मिल रही है, तो कुछ_queryset.count करें। यदि यह पहले से ही मूल्यांकन किया गया है, तो लंबाई आपको डीबी हिट बचा सकती है। –