mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-05 04:50:12 +03:00
Create lists only under certain conditions
This commit is contained in:
parent
7ed8a480a3
commit
f7b2829b03
|
@ -11,9 +11,10 @@ python primitives.
|
||||||
response content is handled by parsers and renderers.
|
response content is handled by parsers and renderers.
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import re
|
|
||||||
import copy
|
import copy
|
||||||
import inspect
|
import inspect
|
||||||
|
import re
|
||||||
import traceback
|
import traceback
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
|
@ -458,6 +459,8 @@ class Serializer(BaseSerializer):
|
||||||
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 = []
|
validated_list = []
|
||||||
|
if not isinstance(primitive_value, list):
|
||||||
|
primitive_value = [primitive_value, ]
|
||||||
for inner_data in primitive_value:
|
for inner_data in primitive_value:
|
||||||
try:
|
try:
|
||||||
validated_value = field.run_validation(inner_data)
|
validated_value = field.run_validation(inner_data)
|
||||||
|
@ -471,10 +474,12 @@ class Serializer(BaseSerializer):
|
||||||
except SkipField:
|
except SkipField:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if len(validated_list) > 1:
|
if isinstance(validated_list[-1], str):
|
||||||
|
set_value(ret, field.source_attrs, validated_list[-1])
|
||||||
|
elif len(validated_list) > 1:
|
||||||
set_value(ret, field.source_attrs, validated_list)
|
set_value(ret, field.source_attrs, validated_list)
|
||||||
else:
|
else:
|
||||||
set_value(ret, field.source_attrs, validated_list[0])
|
set_value(ret, field.source_attrs, validated_list[-1])
|
||||||
if errors:
|
if errors:
|
||||||
raise ValidationError(errors)
|
raise ValidationError(errors)
|
||||||
return ret
|
return ret
|
||||||
|
|
Loading…
Reference in New Issue
Block a user