2013-03-15 2 views
6

obecnie mam konfiguracji widoku interfejsu API, co następuje:Jak paginate z filtrami w ramach odpoczynku 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 

My settings.py zawiera: REST_FRAMEWORK = { 'PAGINATE_BY': 50, 'PAGINATE_BY_PARAM': ' strona” }

Kiedy złożyć wniosek do API tak:/api/pogoda/obserwacje/stacja = 2 & strona = 2 & min_date = 14.03.2013 I tylko wrócić dwa wyniki?. Jeśli jest na stronie 3, 3 wyniki i tak dalej. Czy coś, co robię źle, powoduje ten problem?

Pozdrawiam.

Odpowiedz

3

Wyjazd the docs do tych ustawień:

PAGINATE_BY_PARAM

Nazwa parametru zapytania, które mogą być wykorzystane przez klienta do overide domyślny rozmiar strony, aby użyć do paginacji. Jeśli ustawione na Brak, klienci mogą nie zastąpić domyślnego rozmiaru strony.

Po prostu usuń tę linię ze swojego pliku settings.py i wszystko powinno być w porządku.

UPDATE 07.01.2016:

Zauważ, że ta opcja jest obecnie w trakcie zaniechania. Aby uzyskać więcej informacji, zapoznaj się z pagination guide.

Krótka wersja polega na tym, że powinieneś teraz utworzyć niestandardową klasę stron z odpowiednimi ustawieniami, które następnie zastosujesz do widoku. Przykłady w dołączonym przewodniku powinny być więcej niż pomocne.

+0

Hahah, facepalm. Pomyślałem, że to nazwa parametru, którego użyję do numerowania stron. Dzięki! – slurms

+0

Tak, to raczej słabo nazwane. Cieszę się, że mogłem pomóc! – Hamms