From 9942453e3181f6898a0c4a1d6e5659a25f6f8ac2 Mon Sep 17 00:00:00 2001 From: Krystof Rehacek Date: Wed, 19 Jun 2019 14:37:31 +0200 Subject: [PATCH] fixes #6751 --- rest_framework/serializers.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 857d3ed94..cccc17d2b 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -973,12 +973,17 @@ class ModelSerializer(Serializer): # Note that unlike `.create()` we don't need to treat many-to-many # relationships as being a special case. During updates we already # have an instance pk for the relationships to be associated with. + m2m_fields = [] for attr, value in validated_data.items(): - if attr in info.relations and info.relations[attr].to_many: - field = getattr(instance, attr) - field.set(value) - else: + if attr not in info.relations or not info.relations[attr].to_many: setattr(instance, attr, value) + else: + m2m_fields.append((attr, value)) + + for attr, value in m2m_fields: + field = getattr(instance, attr) + field.set(value) + instance.save() return instance