2013-03-15 14 views
6

मैं वर्तमान में एक एपीआई दृश्य सेटअप के साथ पृष्ठ पर अंक लगाना करने के लिए:इस प्रकार कैसे Django बाकी ढांचे में फिल्टर

class WeatherObservationSerializer(serializers.ModelSerializer): 
    dew_point = serializers.Field(source='dew_point') 
    wind_gust = serializers.Field(source='get_wind_gust') 

    class Meta: 
     model = WeatherObservation 
     fields = ('id', 'station', 'temperature', 'pressure', 'humidity', 
        'wind_direction', 'wind_speed', 'rainfall', 'date', 
        'dew_point', 'wind_gust') 

class WeatherObservationList(generics.ListCreateAPIView): 
    model = WeatherObservation 
    serializer_class = WeatherObservationSerializer 
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,) 

    def get_queryset(self): 
     queryset = WeatherObservation.objects.all() 
     min_date = self.request.QUERY_PARAMS.get('min_date', None) 
     station = self.request.QUERY_PARAMS.get('station', None) 
     if min_date is not None: 
      queryset = queryset.filter(date__gte=min_date) 
     if station is not None: 
      queryset = queryset.filter(station=station) 
     return queryset 

मेरे settings.py शामिल हैं: REST_FRAMEWORK = { 'PAGINATE_BY': 50, 'PAGINATE_BY_PARAM': ' पेज ' }

जब मैं की तरह एपीआई के लिए अनुरोध करने के लिए:/API/मौसम/टिप्पणियों/स्टेशन = 2 & पेज = 2 & MIN_DATE = 2013/03/14 मैं केवल वापस दो परिणाम प्राप्त?। यदि यह पृष्ठ 3, 3 परिणाम, और इसी तरह के लिए है। क्या कोई ऐसी चीज है जो मैं गलत कर रहा हूं जो इस समस्या का कारण बन रही है?

चीयर्स।

उत्तर

3

बाहर the docs उन सेटिंग के लिए चेक:

PAGINATE_BY_PARAM

एक क्वेरी पैरामीटर, जो ग्राहक द्वारा इस्तेमाल किया जा सकता पृष्ठांकन के लिए उपयोग करने के लिए डिफ़ॉल्ट पृष्ठ आकार overide करने का नाम है। यदि कोई भी सेट नहीं है, तो ग्राहक डिफ़ॉल्ट पृष्ठ आकार को ओवरराइड नहीं कर सकते हैं।

बस अपनी सेटिंग्स.py से उस पंक्ति को हटा दें और आपको ठीक होना चाहिए।

अद्यतन 2016/01/07:

ध्यान दें कि इस सेटिंग निंदा की प्रक्रिया में है। अधिक जानकारी के लिए आप pagination guide से परामर्श कर सकते हैं।

संक्षिप्त संस्करण यह है कि अब आपको उचित सेटिंग्स के साथ एक कस्टम पेजिनेशन क्लास बनाना चाहिए जिसे आप अपने दृश्य पर लागू करते हैं। लिंक की गई मार्गदर्शिका में उदाहरण उपयोगी से अधिक होना चाहिए।

+0

हाहा, चेहरे की हथेली। मैंने सोचा कि यह पेज नंबरिंग के लिए उपयोग करने के लिए पैरामीटर का नाम था। धन्यवाद! – slurms

+0

हाँ, यह बदले में खराब नाम है। मैं खुशी से मदद कर सकता है! – Hamms

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