2013-03-15 22 views
6

Io attualmente ho una vista API di installazione come segue:Come impaginare con filtri in quadro Django resto

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 

mio settings.py contiene: REST_FRAMEWORK = { 'PAGINATE_BY': 50, 'PAGINATE_BY_PARAM': ' pagina' }

Quando faccio una richiesta alle API in questo modo:/api/tempo/osservazioni/stazione = 2 & page = 2 & MIN_DATE = 2013/03/14 ho solo ottenere indietro di due risultati?. Se è per pagina 3, 3 risultati e così via. C'è qualcosa che sto sbagliando che sta causando questo problema?

Cheers.

risposta

3

Partenza the docs per tali impostazioni:

PAGINATE_BY_PARAM

Il nome di un parametro di query, che può essere utilizzato dal client per overide il formato pagina predefinito da usare per l'impaginazione. Se impostato su Nessuno, i client non possono sovrascrivere la dimensione della pagina predefinita.

Basta rimuovere quella linea dal tuo settings.py e dovresti stare bene.

UPDATE 2016/01/07:

Nota che questa impostazione è ora in fase di deprecazione. È possibile consultare lo pagination guide per ulteriori dettagli.

La versione breve è che ora è necessario creare una classe di impaginazione personalizzata con le impostazioni appropriate da applicare alla vista. Gli esempi nella guida collegata dovrebbero essere più che utili.

+0

Hahah, facepalm. Ho pensato che fosse il nome del parametro da utilizzare per la numerazione delle pagine. Grazie! – slurms

+0

Sì, è un nome piuttosto scadente. Felice di poterti aiutare! – Hamms

Problemi correlati