From f555c79724eb1da8d04d4973549c19cc6e1fc6a1 Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 14 May 2022 21:39:46 +0100 Subject: [PATCH] STRICT_PARTIAL_UPDATE=True enforce partial using a new configuration flag to decide if to enforce a partial update --- rest_framework/serializers.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 389680517..a211b4a4a 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -997,13 +997,18 @@ class ModelSerializer(Serializer): # relationships as being a special case. During updates we already # have an instance pk for the relationships to be associated with. m2m_fields = [] + update_fields = [] for attr, value in validated_data.items(): if attr in info.relations and info.relations[attr].to_many: m2m_fields.append((attr, value)) else: setattr(instance, attr, value) - - instance.save() + update_fields.append(attr) + + if self.partial and api_settings.STRICT_PARTIAL_UPDATE: + instance.save(update_fields=update_fields) + else: + instance.save() # Note that many-to-many fields are set after updating instance. # Setting m2m fields triggers signals which could potentially change