Ho un api tastapie su cui sto lavorandole viste elenco per le mie risorse API Desidero ottenere l'intera lista di dati senza impaginazione applicata, indipendentemente dal numero di oggetti nell'elenco. Non ho bisogno di un paginatore personalizzato con un limite alto, mi piacerebbe disabilitare l'impaginazione interamente.
Potrei potenzialmente modificare il mio cliente con cui trattarela paginazione (l'API è accessibile da una DLL C ++ piuttosto che da un browser Web, quindi è un po 'più complicato ma possibile), ma se posso disabilitarlo sarebbe più facile.
C'è un interruttore per disabilitare l'impaginatore per risorse diverse, o forse un interruttore api largo per disabilitare l'impaginazione su tutte le risorse registrate su quell'oggetto api?
risposte:
10 per risposta № 1Per fare questo è necessario impostare almeno due cose diverse.
Nel file delle impostazioni del sito, impostare
API_LIMIT_PER_PAGE = 0
Nella classe Meta della risorsa per cui si desidera disabilitare la paginazione, impostare:
class MyResource(ModelResource):
...
class Meta:
...
max_limit = None
Quindi se si passa alla vista elenco della risorsa, il contenuto restituito dovrebbe mostrare un limite di 0.
3 per risposta № 2
La soluzione alternativa sarebbe quella di definire la classe DummyPaginator (originariamente descritta qui: https://github.com/toastdriven/django-tastypie/issues/777), che dovrebbe essere parte di tastypie (ma non è purtroppo ...):
class DummyPaginator(object):
def __init__(self, request_data, objects, resource_uri=None,
limit=None, offset=0, max_limit=1000,
collection_name="objects"):
self.objects = objects
self.collection_name = collection_name
def page(self):
return { self.collection_name: self.objects, }
Quindi, nella tua risorsa Meta, imposti:
paginator_class = DummyPaginator