/ / Disabilita l'impaginazione in Django tasteypie? - python, django, impaginazione, tastypie

Disabilitare l'impaginazione in Django tasteypie? - python, django, impaginazione, tastypie

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 № 1

Per 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