Sto lavorando su un'API costruita con Django Rest Framework
. Ho definito diverse classi model
e ho anche creato alcuni filtri da applicare su determinate query che si verificano nello specifico api-endpoints
.Come limitare i risultati della query con i filtri Django Rest
Sto tentando di applicare LIMIT nello queryset
ma preferirei non utilizzare la notazione Django e.x. Entry.objects.all()[:5]
. Invece mi piacerebbe essere in grado di applicare il limite dall'interno del filtro associato al modello.
Fino ad ora non ho trovato alcuna soluzione. Sto pensando che dovrei trovare un modo per definire un filtro con valore predefinito qualcosa che risulterebbe non limitando il queryset e se una richiesta raggiunge l'endpoint e contiene qualcosa come ?filter=10
allora il queryset dovrebbe essere limitato al primo 10.
che è molto vicino a quello che mi serve davvero! Anche se in questo caso vorrei sovrascrivere la classe 'LimitOffsetPagination' e dare al parametro' offset' un valore predefinito (probabilmente 0) in modo che l'utente debba solo specificare il parametro 'limite'. Sto pensando di usare 'PageNumberPagination' e sovrascrivere il parametro' page_size_query_param' per avere un valore predefinito 'limite'. Suona ragionevole? – LetsPlayYahtzee
Sì, questa è la soluzione giusta. Come indicato nella documentazione, è possibile utilizzare il parametro '' page_size_query_param'' per consentire al client di controllare le dimensioni della pagina di richiesta. In "PageNumberPagination'' questo parametro è impostato come predefinito su Nessuno. –
Potrebbe sembrare sciocco, ma non riesco a capire dove posizionare la classe di impaginazione personalizzata. – LetsPlayYahtzee