diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index cf491c72b..b66c83f97 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -808,7 +808,16 @@ class ModelSerializer(Serializer): raise_errors_on_nested_writes('update', self, validated_data) for attr, value in validated_data.items(): - setattr(instance, attr, value) + if isinstance(value, dict): + instance_attr = getattr(instance, attr) + for _attr, _value in value.items(): + setattr(instance_attr, _attr, _value) + + instance_attr.save() + setattr(instance, attr, instance_attr) + else: + setattr(instance, attr, value) + instance.save() return instance