def get_custom_list(self, request, queryset): ''' Generic function to paginate a queryset with a set of items per page. ''' self.method_check(request, allowed=['get']) self.throttle_check(request) # Do the query. offset = int(request.GET.get('offset', 0)) limit = min(int(request.GET.get('limit', 20)), 1000) paginator = Paginator(request.GET, queryset) try: object_list = paginator.get_slice(limit, offset) except InvalidPage: raise Http404("Sorry, no results on that page.") objects = [] for result in object_list: bundle = self.build_bundle(obj=result, request=request) bundle = self.full_dehydrate(bundle) objects.append(bundle) page = { "meta": { "limit": limit, "offset": offset, "total_count": queryset.count() }, 'objects': objects, } self.log_throttled_access(request) return self.create_response(request, page)