From f7b2829b03a1bd22c38d750c2df9f1450fe66d8c Mon Sep 17 00:00:00 2001 From: sol HYUN Date: Tue, 6 Dec 2016 00:20:08 +0900 Subject: [PATCH] Create lists only under certain conditions --- rest_framework/serializers.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 01b62a089..7be25fcbd 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -11,9 +11,10 @@ python primitives. response content is handled by parsers and renderers. """ from __future__ import unicode_literals -import re + import copy import inspect +import re import traceback from collections import OrderedDict @@ -458,6 +459,8 @@ class Serializer(BaseSerializer): validate_method = getattr(self, 'validate_' + field.field_name, None) primitive_value = field.get_value(data) validated_list = [] + if not isinstance(primitive_value, list): + primitive_value = [primitive_value, ] for inner_data in primitive_value: try: validated_value = field.run_validation(inner_data) @@ -471,10 +474,12 @@ class Serializer(BaseSerializer): except SkipField: pass 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) else: - set_value(ret, field.source_attrs, validated_list[0]) + set_value(ret, field.source_attrs, validated_list[-1]) if errors: raise ValidationError(errors) return ret