aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2014-09-03 16:33:42 +0100
committerTom Christie2014-09-03 16:33:42 +0100
commit560f428e24c7676c660114c2daa6017ff61074ad (patch)
treec4d7a99a9097589d2a92e0bf9dbc7e71189d8442
parentb40525d8e6b3b4839c61053bc1613843d5b8b63d (diff)
parentafe9b37f600ba7dad9de249f56ea1e7c539939f7 (diff)
downloaddjango-rest-framework-560f428e24c7676c660114c2daa6017ff61074ad.tar.bz2
Merge pull request #1826 from swistakm/fix/explicit-many-in-pagination-serializer-results
Use explicit `many=True` in PaginationSerializer on `object_serializer` instantiation
-rw-r--r--rest_framework/pagination.py9
-rw-r--r--tests/test_pagination.py19
2 files changed, 25 insertions, 3 deletions
diff --git a/rest_framework/pagination.py b/rest_framework/pagination.py
index d51ea929..1f5749f1 100644
--- a/rest_framework/pagination.py
+++ b/rest_framework/pagination.py
@@ -43,8 +43,9 @@ class DefaultObjectSerializer(serializers.Field):
as the default.
"""
- def __init__(self, source=None, context=None):
- # Note: Swallow context kwarg - only required for eg. ModelSerializer.
+ def __init__(self, source=None, many=None, context=None):
+ # Note: Swallow context and many kwargs - only required for
+ # eg. ModelSerializer.
super(DefaultObjectSerializer, self).__init__(source=source)
@@ -82,7 +83,9 @@ class BasePaginationSerializer(serializers.Serializer):
else:
context_kwarg = {}
- self.fields[results_field] = object_serializer(source='object_list', **context_kwarg)
+ self.fields[results_field] = object_serializer(source='object_list',
+ many=True,
+ **context_kwarg)
class PaginationSerializer(BasePaginationSerializer):
diff --git a/tests/test_pagination.py b/tests/test_pagination.py
index 80c33e2e..e1c2528b 100644
--- a/tests/test_pagination.py
+++ b/tests/test_pagination.py
@@ -412,6 +412,15 @@ class CustomPaginationSerializer(pagination.BasePaginationSerializer):
results_field = 'objects'
+class CustomFooSerializer(serializers.Serializer):
+ foo = serializers.CharField()
+
+
+class CustomFooPaginationSerializer(pagination.PaginationSerializer):
+ class Meta:
+ object_serializer_class = CustomFooSerializer
+
+
class TestCustomPaginationSerializer(TestCase):
def setUp(self):
objects = ['john', 'paul', 'george', 'ringo']
@@ -434,6 +443,16 @@ class TestCustomPaginationSerializer(TestCase):
}
self.assertEqual(serializer.data, expected)
+ def test_custom_pagination_serializer_with_custom_object_serializer(self):
+ objects = [
+ {'foo': 'bar'},
+ {'foo': 'spam'}
+ ]
+ paginator = Paginator(objects, 1)
+ page = paginator.page(1)
+ serializer = CustomFooPaginationSerializer(page)
+ serializer.data
+
class NonIntegerPage(object):