2013-03-15 2 views
6

장고 나머지 프레임 워크 필터 페이지를 매기는 방법 :다음과 같이 내가 현재 API보기 설정을 가지고

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에 요청을 너무 :/API/날씨/관찰/역 = 2 & 페이지 = 2 & MIN_DATE = 2013년 3월 14일 난 단지 다시 두 개의 결과를 얻을?. 3면, 3면 결과 등. 이 문제의 원인이 무엇인지 잘못하고 있습니까?

건배. 이러한 설정에 대해 알아 the docs

답변

3

확인 :

PAGINATE_BY_PARAM

페이지 매기기에 사용할 기본 페이지 크기를 오버라이드 (override)하는하기 위해 클라이언트에서 사용할 수있는 쿼리 매개 변수의 이름입니다. 없음으로 설정하면 클라이언트가 기본 페이지 크기를 무시할 수 없습니다.

해당 설정을 settings.py에서 제거하기 만하면됩니다.

UPDATE 2016년 1월 7일 :이 설정을 중단하는 과정에 있는지

참고. 자세한 내용은 pagination guide을 참조하십시오.

짧은 버전은 적절한 설정으로 사용자 지정 페이지 매김 클래스를 만든 다음보기에 적용해야한다는 것입니다. 연결된 안내서의 예는 도움이 될 것만 큼 유용합니다.

+0

하하, facepalm. 페이지 번호 매기기에 사용할 매개 변수의 이름이라고 생각했습니다. 감사! – slurms

+0

그래, 그것은 오히려 가난하게 지명된다. 다행스럽게 도울 수있어! – Hamms

관련 문제