blob: 398e6f3d588fda6efb1cc66f627f03cc0c783ec3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
from rest_framework import serializers
# TODO: Support URLconf kwarg-style paging
class NextPageField(serializers.Field):
def to_native(self, value):
if not value.has_next():
return None
page = value.next_page_number()
request = self.context['request']
return request.build_absolute_uri('?page=%d' % page)
class PreviousPageField(serializers.Field):
def to_native(self, value):
if not value.has_previous():
return None
page = value.previous_page_number()
request = self.context['request']
return request.build_absolute_uri('?page=%d' % page)
class PaginationSerializer(serializers.Serializer):
count = serializers.Field(source='paginator.count')
next = NextPageField(source='*')
previous = PreviousPageField(source='*')
def to_native(self, obj):
"""
Prevent default behaviour of iterating over elements, and serializing
each in turn.
"""
return self.convert_object(obj)
|