diff options
| author | Tom Christie | 2012-11-07 20:13:27 +0000 |
|---|---|---|
| committer | Tom Christie | 2012-11-07 20:13:27 +0000 |
| commit | 9fd061a0b68f0cef6683bf195911a2cc7ff2fa06 (patch) | |
| tree | 60769e37be41acf4bf12ba4ad59737e57c55da6a /rest_framework/pagination.py | |
| parent | 066d51faa16d1cfd3c8370c6bfe46f8494bbc26a (diff) | |
| parent | 09f39bd23b3c688c89551845d665395e1aabbfab (diff) | |
| download | django-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.py | 20 |
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 |
