diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 7d85894f6..40125a295 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -571,7 +571,10 @@ class BaseSerializer(WritableField): DeprecationWarning, stacklevel=2) if many: - self._data = [self.to_native(item) for item in obj] + if hasattr(obj, '__iter__'): + self._data = [self.to_native(item) for item in obj] + else: + self._data = [] else: self._data = self.to_native(obj) diff --git a/tests/test_serializer_empty.py b/tests/test_serializer_empty.py index 30cff3615..454a228a8 100644 --- a/tests/test_serializer_empty.py +++ b/tests/test_serializer_empty.py @@ -13,3 +13,16 @@ class EmptySerializerTestCase(TestCase): serializer = FooBarSerializer() self.assertEquals(serializer.data, {'foo': 0}) + + def test_serializing_none(self): + class FooBarSerializer(serializers.Serializer): + foo = serializers.IntegerField() + bar = serializers.SerializerMethodField('get_bar') + + def get_bar(self, obj): + return 'bar' + + serializer = FooBarSerializer(None, many=True) + self.assertEquals(serializer.data, []) + +