2016-02-16 15 views
5

में पृष्ठ_साइज को ओवरराइड करें मुझे django rest framework पेजिनेशन में समस्या है। मैं तरह सेटिंग में पृष्ठांकन निर्धारित किया है -डेजैगो रेस्ट फ्रेमवर्क व्यूसेट

'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination', 
'PAGE_SIZE': 1 

नीचे मेरी viewset है।

class HobbyCategoryViewSet(viewsets.ModelViewSet):  
    serializer_class = HobbyCategorySerializer 
    queryset = UserHobbyCategory.objects.all() 

मैं इस विचारसेट के लिए अलग-अलग पेज आकार सेट करना चाहता हूं। मैंने पेज_साइज और पेजिनेट_बी क्लास वेरिएबल्स सेट करने का प्रयास किया है लेकिन सेटिंग में परिभाषित PAGE_SIZE के अनुसार सूची को पृष्ठांकित किया गया है। कोई विचार जहां मैं गलत हूं?

+0

क्या आपने 'pagination_class' सेट करने का प्रयास किया है? – ilse2005

+0

यदि आप सामान्य दृश्यों पर get_paginate_by विधि को ओवरराइड करने के लिए हार्ड अधिकतम सीमा निर्धारित करना चाहते हैं। –

+0

पेजिनेशन_क्लास ने काम किया लेकिन मुझे कस्टम पेजिनेशन क्लास बनाना पड़ा। – Mangesh

उत्तर

7

मैंने कस्टम पेजिनेशन क्लास बनाकर इसे ठीक किया। और वर्ग में वांछित पेजसाइज सेटिंग। मैंने इस विचार को मेरे विचारों में पेजिनेशन_क्लास के रूप में उपयोग किया है।

class ExamplePagination(pagination.PageNumberPagination):  
     page_size = 2 

class HobbyCategoryViewSet(viewsets.ModelViewSet):  
    serializer_class = HobbyCategorySerializer 
    queryset = UserHobbyCategory.objects.all() 
    pagination_class=ExamplePagination 

मुझे यकीन नहीं है कि इसके लिए कोई आसान तरीका है या नहीं। यह मेरे लिए काम किया। लेकिन मुझे लगता है कि पेज_ आकार बदलने के लिए नई कक्षा बनाने के लिए अच्छा नहीं है।

संपादित करें - सरल उपाय यह

pagination.PageNumberPagination.page_size = 100 

ViewSet में की तरह स्थापित किया जाएगा।

class HobbyCategoryViewSet(viewsets.ModelViewSet):  
    serializer_class = HobbyCategorySerializer 
    queryset = UserHobbyCategory.objects.all() 
    pagination.PageNumberPagination.page_size = 100 
+0

बदलते पेजिनेशन। विभिन्न विचारों में पेज नम्बर पेजिनेशन.पृष्ठ_साइज का परिणाम विभिन्न आकारों में नहीं होता है। केवल एक पृष्ठ_साइज सेट किया गया है –

5

उपयोग पृष्ठ आकार क्वेरी पैरामीटर सेटिंग्स

REST_FRAMEWORK = {'DEFAULT_PAGINATION_CLASS': 'StandardResultsSetPagination',} 

में पृष्ठ आकार गतिशील रूप से उपलब्ध कराने के लिए ..

from rest_framework.pagination import PageNumberPagination 

class StandardResultsSetPagination(PageNumberPagination): 
    page_size_query_param = 'limit' 

डिफ़ॉल्ट सेट पृष्ठांकन वर्ग अब अपने URL में एक GET पैरामीटर के रूप में सीमा प्रदान करते हैं।

http://example.com/list/ ? सीमा = 100 या 25

+0

आप 'मानक रीसेट्ससेट पेजिनेशन' कक्षा कहां डालते हैं ताकि 'DEFAULT_PAGINATION_CLASS' इसे देख सके? – Curtwagner1984

+0

संपादित उत्तर ... आपको सेटिंग्स में जोड़ने की आवश्यकता है – Naresh

+0

हाँ मुझे पता है, मेरा मतलब है कि आप कक्षा को स्वयं कहां रखते हैं ताकि सेटिंग्स.py में सेटिंग DEFAULT_PAGINATION_CLASS इसे देखे? – Curtwagner1984

1

मामले में आप, आप PAGE_SIZE के बजाय default_limit चर ओवरराइड करने के लिए है LimitOffsetPagination वर्ग के "पृष्ठ आकार" बदलने के लिए कोशिश कर रहे हैं:

from rest_framework import paginationclass 


CustomLimitOffsetPagination(pagination.LimitOffsetPagination): 
    default_limit = 5 
संबंधित मुद्दे