From c34b1e3db2d781742e5df29199a57db6dd825306 Mon Sep 17 00:00:00 2001 From: Alphwe Date: Sun, 25 May 2014 21:52:52 -0500 Subject: [PATCH] Update generics.py while param page_size = 0, only return the count of the results, it is useful when we just wanna query the records count --- rest_framework/generics.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/rest_framework/generics.py b/rest_framework/generics.py index 7bac510f7..c0fd4226b 100644 --- a/rest_framework/generics.py +++ b/rest_framework/generics.py @@ -131,6 +131,17 @@ class GenericAPIView(views.APIView): # Determine the required page size. # If pagination is not configured, simply return None. page_size = self.get_paginate_by() + if page_size == 0: + from django.core.paginator import Page + class Paginator(): + def __init__(self, queryset): + self.count = queryset.count() + self.num_pages = 0 + def validate_number(self, number): + return number + paginator = Paginator(queryset) + return Page(None, 0, paginator) + if not page_size: return None @@ -216,6 +227,9 @@ class GenericAPIView(views.APIView): if self.paginate_by_param: try: + if self.request.QUERY_PARAMS[self.paginate_by_param] == '0': + return 0 + return strict_positive_int( self.request.QUERY_PARAMS[self.paginate_by_param], cutoff=self.max_paginate_by