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.
|
||||
"""
|
||||
|
||||
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 many kwarg - required for eg. serializing a list.
|
||||
super(DefaultObjectSerializer, self).__init__(source=source)
|
||||
|
||||
|
||||
|
@ -82,7 +83,8 @@ class BasePaginationSerializer(serializers.Serializer):
|
|||
else:
|
||||
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):
|
||||
|
|
|
@ -518,3 +518,35 @@ class TestNonIntegerPagination(TestCase):
|
|||
'objects': objects[2:]
|
||||
}
|
||||
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