2012-11-22 23 views
6

मेरे पास mongodb और mongoengine का उपयोग करके अंकन के बारे में एक प्रश्न है। मेरे पास एक सारणी है जिसमें भविष्य में लाखों रिकॉर्ड होंगे। और मैं इस तरह पेजिंग कर रहा हूँ।mongoengine का उपयोग करके अंकन कैसे करें?

अच्छी तरह से मैं नहीं यकीन है कि यह सही दृष्टिकोण

list = Books.objects.all() 
    paginator = DiggPaginator(list, 20, body = 10, tail = 2) 

यहाँ मैं पूरी तालिका खोलें और फिर पृष्ठांकन करना है और पर अगले पृष्ठ के लिए फिर से कोड रन से ऊपर हूँ हम और 2 या किसी पेज लाता है।

यह सही दृष्टिकोण है या ऐसा करने के लिए कोई बेहतर तरीका है।

उत्तर

16

आप अंकन प्राप्त करने के लिए QuerySet से skip और limit का उपयोग कर सकते हैं।
उदाहरण के लिए यदि आप प्रति पृष्ठ 10 मदों की एक सीमा के साथ दूसरे पेज दिखाना चाहते हैं, तो आप इस तरह कर सकते हैं:

page_nb = 2 
items_per_page = 10 

offset = (page_nb - 1) * items_per_page 

list = Books.objects.skip(offset).limit(items_per_page) 
+0

क्या इसका मतलब है कि मेरा दृष्टिकोण सही नहीं है? या वह सर्वर पर कोई अतिरिक्त लोड डाले बिना भी ठीक काम करेगा। – user493550

+1

'Books.objects.all()' का उपयोग करके, आप तालिका से सभी दस्तावेजों का अनुरोध करते हैं, इसलिए यदि आपकी तालिका में लाखों रिकॉर्ड हैं जो सर्वर पर कुछ लोड डाल देंगे। वैसे भी, यह जांचने के लिए एक बेंचमार्क सेट करना छोटा होना चाहिए कि आपके उपयोग के मामले में सबसे प्रभावी क्या है। – Eric

0

flask-mongoengine प्लगइन एक paginator आप digg पालन करने के लिए खुद को अनुकूलित कर का एक उदाहरण है paginator।

संबंधित मुद्दे