Pracuję nad api zbudowanym przy użyciu Django Rest Framework
. Zdefiniowałem kilka klas model
i utworzyłem także kilka filtrów do zastosowania w niektórych zapytaniach, które występują w podanym api-endpoints
.Jak ograniczyć wyniki zapytania za pomocą filtrów Django Rest
Próbuję zastosować LIMIT w queryset
, ale wolałbym nie używać używania notacji Django e.x. Entry.objects.all()[:5]
. Zamiast tego chciałbym móc zastosować limit z wnętrza filtra związanego z modelem.
Do tej pory nie znalazłem żadnego rozwiązania. Myślę, że powinienem znaleźć sposób, aby zdefiniować filtr z wartością domyślną, coś, co spowodowałoby nie ograniczanie zestawu zapytań i jeśli żądanie dotrze do punktu końcowego i zawiera coś w rodzaju ?filter=10
, wówczas zestaw zapytań powinien być ograniczony do pierwszego 10.
który jest bardzo zbliżony do tego, co muszę rzeczywiście! Chociaż w tym przypadku chciałbym przesłonić klasę "LimitOffsetPagination" i nadać parametrowi 'offset' wartość domyślną (prawdopodobnie 0), tak aby użytkownik musiał tylko określić parametr' limit'. Mam zamiar użyć 'PageNumberPagination' i zastąpić parametr' page_size_query_param', aby mieć domyślną wartość 'limit'. Czy to brzmi rozsądnie? – LetsPlayYahtzee
Tak, to jest dobre rozwiązanie. Jak stwierdzono w dokumentacji, parametr '' page_size_query_param'' może być użyty do umożliwienia klientowi kontrolowania rozmiaru strony żądania. W '' PageNumberPagination'' ten parametr jest ustawiony jako domyślny na Brak. –
Może to zabrzmieć głupio, ale nie wiem, gdzie umieścić niestandardową klasę stronicowania. – LetsPlayYahtzee