Create lists only under certain conditions

This commit is contained in:
sol HYUN 2016-12-06 00:20:08 +09:00
parent 7ed8a480a3
commit f7b2829b03

View File

@ -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