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 результата и т. Д. Есть ли что-то, что я делаю неправильно, что вызывает эту проблему?

Cheers.

ответ

3

Заканчивать the docs для этих параметров:

PAGINATE_BY_PARAM

Имя параметра запроса, который может быть использован клиентом для overide размер страницы, используемый по умолчанию для нумерации страниц. Если установлено значение Нет, клиенты не могут переопределять размер страницы по умолчанию.

Просто удалите эту строку из параметров settings.py, и все должно быть в порядке.

UPDATE 1/7/2016:

Обратите внимание, что эта установка в настоящее время в процессе устаревания. Для получения дополнительной информации вы можете обратиться к pagination guide.

Короткий вариант заключается в том, что теперь вы должны создать настраиваемый класс Pagination с соответствующими настройками, которые затем применяются к вашему представлению. Примеры в связанном руководстве должны быть более чем полезными.

+0

Hahah, facepalm. Я думал, что это имя параметра для использования нумерации страниц. Благодаря! – slurms

+0

Да, это довольно плохо названо. Рад, что смог помочь! – Hamms

Смежные вопросы