mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-05 13:00:12 +03:00
'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:
parent
8d441e31d1
commit
50c51c335e
|
@ -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):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user