This commit is contained in:
José Padilla 2015-10-06 08:35:59 -04:00 committed by José Padilla
parent 6fb96e93ef
commit 1abd50143d
2 changed files with 21 additions and 10 deletions

View File

@ -91,7 +91,7 @@ class BaseSerializer(Field):
self.initial_data = data
self.partial = kwargs.pop('partial', False)
self._context = kwargs.pop('context', {})
kwargs.pop('many', None)
self.many = kwargs.pop('many', None)
super(BaseSerializer, self).__init__(**kwargs)
def __new__(cls, *args, **kwargs):
@ -212,10 +212,10 @@ class BaseSerializer(Field):
try:
self._validated_data = self.run_validation(self.initial_data)
except ValidationError as exc:
self._validated_data = {}
self._validated_data = [] if self.many else {}
self._errors = exc.detail
else:
self._errors = {}
self._errors = [] if self.many else {}
if self._errors and raise_exception:
raise ValidationError(self.errors)
@ -670,16 +670,25 @@ class ListSerializer(BaseSerializer):
# Allows renderers such as HTMLFormRenderer to get the full field info.
@property
def data(self):
ret = super(ListSerializer, self).data
def errors(self):
ret = super(ListSerializer, self).errors
if ret == {}:
return ReturnList([], serializer=self)
if isinstance(ret, dict):
return ReturnDict(ret, serializer=self)
return ReturnList(ret, serializer=self)
@property
def errors(self):
ret = super(ListSerializer, self).errors
if isinstance(ret, dict):
return ReturnDict(ret, serializer=self)
return ReturnList(ret, serializer=self)
def validated_data(self):
validated_data = super(ListSerializer, self).validated_data
if validated_data == {}:
return ReturnList([], serializer=self)
return validated_data
# ModelSerializer & HyperlinkedModelSerializer

View File

@ -46,6 +46,7 @@ class BulkCreateSerializerTests(TestCase):
serializer = self.BookSerializer(data=data, many=True)
self.assertEqual(serializer.is_valid(), True)
self.assertEqual(serializer.validated_data, data)
self.assertEqual(serializer.errors, [])
def test_bulk_create_errors(self):
"""
@ -76,6 +77,7 @@ class BulkCreateSerializerTests(TestCase):
serializer = self.BookSerializer(data=data, many=True)
self.assertEqual(serializer.is_valid(), False)
self.assertEqual(serializer.errors, expected_errors)
self.assertEqual(serializer.validated_data, [])
def test_invalid_list_datatype(self):
"""