From aa7941470ac94f17bdb221d56ab32ba031faecc4 Mon Sep 17 00:00:00 2001 From: Ryan P Kilby Date: Fri, 5 Jul 2019 18:03:26 -0700 Subject: [PATCH] Fix dotted-source field checking on serializer write The code was previously checking the validated data for the field's attribute name, however, the data contain the first source attr. --- rest_framework/serializers.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index b153c067f..320148789 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -819,10 +819,10 @@ def raise_errors_on_nested_writes(method_name, serializer, validated_data): # ... # address = serializer.CharField('profile.address') assert not any( - '.' in field.source and - (key in validated_data) and - isinstance(validated_data[key], (list, dict)) - for key, field in serializer.fields.items() + len(field.source_attrs) > 1 and + (field.source_attrs[0] in validated_data) and + isinstance(validated_data[field.source_attrs[0]], (list, dict)) + for field in serializer._writable_fields ), ( 'The `.{method_name}()` method does not support writable dotted-source ' 'fields by default.\nWrite an explicit `.{method_name}()` method for '