From 88b602df51bae9415d6667eec22b82edb01893bd Mon Sep 17 00:00:00 2001 From: Ian Phillips Date: Wed, 4 Jun 2014 13:55:12 -0700 Subject: [PATCH] issue 1615: delete removed relations before adding This can prevent duplicate key errors. --- 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 c2b414d7a..5aa192bdf 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -1024,16 +1024,16 @@ class ModelSerializer(Serializer): ]) for accessor_name, related in obj._related_data.items(): if isinstance(related, RelationsList): + # Delete any removed objects + if related._deleted: + [self.delete_object(item) for item in related._deleted] + # Nested reverse fk relationship for related_item in related: fk_field = related_fields[accessor_name].field.name setattr(related_item, fk_field, obj) self.save_object(related_item) - # Delete any removed objects - if related._deleted: - [self.delete_object(item) for item in related._deleted] - elif isinstance(related, models.Model): # Nested reverse one-one relationship fk_field = obj._meta.get_field_by_name(accessor_name)[0].field.name