diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index b3db35823..bd771f75f 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -587,10 +587,10 @@ class BaseSerializer(WritableField): self._data = None if isinstance(self.object, list): - [self.save_object(item, **kwargs) for item in self.object] - if self.object._deleted: [self.delete_object(item) for item in self.object._deleted] + + [self.save_object(item, **kwargs) for item in self.object] else: self.save_object(self.object, **kwargs) @@ -1049,16 +1049,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