mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-03 20:10:10 +03:00
add many=True to BasePaginationSerializer's results_field
This commit is contained in:
parent
15c2c58b43
commit
eb286eadb9
|
@ -43,8 +43,9 @@ class DefaultObjectSerializer(serializers.Field):
|
||||||
as the default.
|
as the default.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, source=None, context=None):
|
def __init__(self, source=None, context=None, many=False):
|
||||||
# Note: Swallow context kwarg - only required for eg. ModelSerializer.
|
# Note: Swallow context kwarg - only required for eg. ModelSerializer.
|
||||||
|
# Note: Swallow many kwarg - required for eg. serializing a list.
|
||||||
super(DefaultObjectSerializer, self).__init__(source=source)
|
super(DefaultObjectSerializer, self).__init__(source=source)
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,7 +83,8 @@ class BasePaginationSerializer(serializers.Serializer):
|
||||||
else:
|
else:
|
||||||
context_kwarg = {}
|
context_kwarg = {}
|
||||||
|
|
||||||
self.fields[results_field] = object_serializer(source='object_list', **context_kwarg)
|
# we expect an array-like data structure here
|
||||||
|
self.fields[results_field] = object_serializer(source='object_list', many=True, **context_kwarg)
|
||||||
|
|
||||||
|
|
||||||
class PaginationSerializer(BasePaginationSerializer):
|
class PaginationSerializer(BasePaginationSerializer):
|
||||||
|
|
|
@ -518,3 +518,35 @@ class TestNonIntegerPagination(TestCase):
|
||||||
'objects': objects[2:]
|
'objects': objects[2:]
|
||||||
}
|
}
|
||||||
self.assertEqual(serializer.data, expected)
|
self.assertEqual(serializer.data, expected)
|
||||||
|
|
||||||
|
|
||||||
|
# Tests for many=True in pagination.BasePaginationSerializer
|
||||||
|
|
||||||
|
class BasicSerializer(serializers.Serializer):
|
||||||
|
id = serializers.Field()
|
||||||
|
text = serializers.Field()
|
||||||
|
|
||||||
|
|
||||||
|
class BasicPaginationSerializer(pagination.BasePaginationSerializer):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
object_serializer_class = BasicSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class TestNonQuerySetPagination(TestCase):
|
||||||
|
"""
|
||||||
|
Tests for generic data structures which is not a django queryset
|
||||||
|
"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.data = [
|
||||||
|
{'id': i, 'text': i}
|
||||||
|
for i in range(13)
|
||||||
|
]
|
||||||
|
self.paginator = Paginator(self.data, 10)
|
||||||
|
|
||||||
|
def test_unpaginated(self):
|
||||||
|
first_page = self.paginator.page(1)
|
||||||
|
serializer = BasicPaginationSerializer(instance=first_page)
|
||||||
|
serializer.data
|
||||||
|
self.assertEqual(serializer.data['results'], self.data[:self.paginator.per_page])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user