This commit is contained in:
José Padilla 2016-06-08 14:55:11 +00:00
commit a7dd5aab19

View File

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