aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/pagination.py
diff options
context:
space:
mode:
authorTom Christie2012-11-07 20:13:27 +0000
committerTom Christie2012-11-07 20:13:27 +0000
commit9fd061a0b68f0cef6683bf195911a2cc7ff2fa06 (patch)
tree60769e37be41acf4bf12ba4ad59737e57c55da6a /rest_framework/pagination.py
parent066d51faa16d1cfd3c8370c6bfe46f8494bbc26a (diff)
parent09f39bd23b3c688c89551845d665395e1aabbfab (diff)
downloaddjango-rest-framework-9fd061a0b68f0cef6683bf195911a2cc7ff2fa06.tar.bz2
Merge branch 'restframework2-filter' of git://github.com/onepercentclub/django-rest-framework into filtering
Diffstat (limited to 'rest_framework/pagination.py')
-rw-r--r--rest_framework/pagination.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/rest_framework/pagination.py b/rest_framework/pagination.py
index 131718fd..c77a1005 100644
--- a/rest_framework/pagination.py
+++ b/rest_framework/pagination.py
@@ -3,7 +3,11 @@ from rest_framework import serializers
# TODO: Support URLconf kwarg-style paging
-class NextPageField(serializers.Field):
+class PageField(serializers.Field):
+ page_field = 'page'
+
+
+class NextPageField(PageField):
"""
Field that returns a link to the next page in paginated results.
"""
@@ -12,13 +16,16 @@ class NextPageField(serializers.Field):
return None
page = value.next_page_number()
request = self.context.get('request')
- relative_url = '?page=%d' % page
+ relative_url = '?%s=%d' % (self.page_field, page)
if request:
+ for field, value in request.QUERY_PARAMS.iteritems():
+ if field != self.page_field:
+ relative_url += '&%s=%s' % (field, value)
return request.build_absolute_uri(relative_url)
return relative_url
-class PreviousPageField(serializers.Field):
+class PreviousPageField(PageField):
"""
Field that returns a link to the previous page in paginated results.
"""
@@ -27,9 +34,12 @@ class PreviousPageField(serializers.Field):
return None
page = value.previous_page_number()
request = self.context.get('request')
- relative_url = '?page=%d' % page
+ relative_url = '?%s=%d' % (self.page_field, page)
if request:
- return request.build_absolute_uri('?page=%d' % page)
+ for field, value in request.QUERY_PARAMS.iteritems():
+ if field != self.page_field:
+ relative_url += '&%s=%s' % (field, value)
+ return request.build_absolute_uri(relative_url)
return relative_url