दिलचस्प पोस्ट
Google स्थल API – REQUEST_DENIED जावा में SIGKILL सिग्नल को शानदार तरीके से कैसे प्रबंधित करें मार्जिन-टॉप को बाहरी डिवा नीचे दबाएं आईओएस ऑटोलायआउट – फ़्रेम आकार चौड़ाई प्राप्त करें WinDbg में एसओएस लोड करने में असमर्थ दो तिथियों के बीच महीनों को खोजने का सर्वोत्तम तरीका क्या हमें * सापेक्ष * त्रुटि के खिलाफ समानता के लिए अस्थायी बिंदु संख्याओं की तुलना करनी चाहिए? सी ++ में अतिरिक्त योग्यता त्रुटि किसी भी XML टैग में विशेषता जोड़ने के लिए Regexp हैश अजगर में क्या करता है? एसी # सी की फ़्रेड फाइल I / O के बराबर यूआईटीबल्यूव्यू में आईफोन एकाधिक कॉलम लक्ष्य 'android-XX' को हल करने में असमर्थ डिफ़ॉल्ट चयन विकल्प रिक्त के रूप में पायथन के लिए सबसे अच्छा वीडियो हेरफेर लाइब्रेरी?

Django आलसी QuerySet और पृष्ठ पर अंक लगाना

मैंने यहां पढ़ा है कि Django क्वेरीज़ आलसी हैं, इसका मूल्यांकन तब तक नहीं किया जाएगा जब तक कि यह वास्तव में मुद्रित न हो जाए। मैंने डीजेंगो के अंतर्निर्मित पृष्ठांकन का उपयोग करके एक साधारण पृष्ठ पर अंकुश लगाने की है। मुझे नहीं पता था कि ऐसे ऐप्लिकेशन पहले से ही हैं जैसे "डीजेंगो-पेजिनेशन", और "डीजेन्गो-एंडलेस" जो कि उस नौकरी के लिए करता है।

वैसे भी मुझे आश्चर्य है कि QuerySet अभी भी आलसी है जब मैं उदाहरण के लिए ऐसा करते हैं

entries = Entry.objects.filter(...) paginator = Paginator(entries, 10) output = paginator.page(page) return HttpResponse(output) 

और इस भाग को हर बार कहा जाता है कि मैं वर्तमान में जो पृष्ठ देखना चाहता हूं, मैं उसे प्राप्त करना चाहता हूं।

मुझे जानने की आवश्यकता है क्योंकि मैं डेटाबेस में अनावश्यक लोड नहीं करना चाहता।

Solutions Collecting From Web of "Django आलसी QuerySet और पृष्ठ पर अंक लगाना"

यदि आप देखना चाहते हैं कि कहां हैं, तो आयात करें django.db.connection और queries का निरीक्षण करें

 >>> from django.db import connection >>> from django.core.paginator import Paginator >>> queryset = Entry.objects.all() 

पेजिनेटर बनाने देता है, और देखें कि क्या कोई प्रश्न उत्पन्न होते हैं:

 >>> paginator = Paginator(queryset, 10) >>> print connection.queries [] 

अभी तक नहीं।

 >>> page = paginator.page(4) >>> page <Page 4 of 788> >>> print connection.queries [{'time': '0.014', 'sql': 'SELECT COUNT(*) FROM `entry`'}] 

पृष्ठ बनाने से एक क्वेरी उत्पन्न हुई है, यह जानने के लिए कि क्वेरी कितनी प्रविष्टियां हैं प्रविष्टियां अभी तक प्राप्त नहीं हुई हैं।

पृष्ठ की ऑब्जेक्ट्स को 'ऑब्जेक्ट' में असाइन करें:

 >>> objects = page.object_list >>> print connection.queries [{'time': '0.014', 'sql': 'SELECT COUNT(*) FROM `entry`'}] 

यह अभी भी प्रविष्टियों को प्राप्त करने के लिए कारण नहीं है

वस्तु सूची से HttpResponse उत्पन्न करें

 >>> response = HttpResponse(page.object_list) >>> print connection.queries [{'time': '0.014', 'sql': 'SELECT COUNT(*) FROM `entry`'}, {'time': '0.011', 'sql': 'SELECT `entry`.`id`, <snip> FROM `entry` LIMIT 10 OFFSET 30'}] 

अंत में, प्रविष्टियां प्राप्त की गई हैं

यह है। Django का पृष्ठांकन समान नियम / अनुकूलन का उपयोग करता है जो क्वेरीज़ पर लागू होता है।

इसका मतलब है कि यह return HttpResponse(output) पर मूल्यांकन करना शुरू करेगा