'to_internal_value method' is reverted

If I manipulate the list, I get a lot of errors.
Although multi-upload operations are limited,
It works fine when doing a single upload from a nested serializer.
This commit is contained in:
sol HYUN 2016-12-06 00:58:51 +09:00
parent 8d441e31d1
commit 50c51c335e

View File

@ -439,7 +439,7 @@ class Serializer(BaseSerializer):
raise ValidationError(detail=as_serializer_error(exc)) raise ValidationError(detail=as_serializer_error(exc))
return value return value
def to_internal_value(self, data): def to_internal_value(self, data):
""" """
Dict of native values <- Dict of primitive datatypes. Dict of native values <- Dict of primitive datatypes.
@ -455,33 +455,26 @@ class Serializer(BaseSerializer):
ret = OrderedDict() ret = OrderedDict()
errors = OrderedDict() errors = OrderedDict()
fields = self._writable_fields fields = self._writable_fields
for field in fields: for field in fields:
validate_method = getattr(self, 'validate_' + field.field_name, None) validate_method = getattr(self, 'validate_' + field.field_name, None)
primitive_value = field.get_value(data) primitive_value = field.get_value(data)
validated_list = [] try:
if not isinstance(primitive_value, list): validated_value = field.run_validation(primitive_value)
primitive_value = [primitive_value, ] if validate_method is not None:
for inner_data in primitive_value: validated_value = validate_method(validated_value)
try: except ValidationError as exc:
validated_value = field.run_validation(inner_data) errors[field.field_name] = exc.detail
validated_list.append(validated_value) except DjangoValidationError as exc:
if validate_method is not None: errors[field.field_name] = get_error_detail(exc)
validated_list.append(validate_method(validated_value)) except SkipField:
except ValidationError as exc: pass
errors[field.field_name] = exc.detail
except DjangoValidationError as exc:
errors[field.field_name] = get_error_detail(exc)
except SkipField:
pass
else: else:
if isinstance(validated_list[-1], str): set_value(ret, field.source_attrs, validated_value)
set_value(ret, field.source_attrs, validated_list[-1])
elif len(validated_list) > 1:
set_value(ret, field.source_attrs, validated_list)
else:
set_value(ret, field.source_attrs, validated_list[-1])
if errors: if errors:
raise ValidationError(errors) raise ValidationError(errors)
return ret return ret
def to_representation(self, instance): def to_representation(self, instance):