@@ -460,7 +460,7 @@ def errors(self):
460
460
ret .append (self .from_native (item , None ))
461
461
errors .append (self ._errors )
462
462
463
- if update :
463
+ if update and self . allow_add_remove :
464
464
ret ._deleted = identity_to_objects .values ()
465
465
466
466
self ._errors = any (errors ) and errors or []
@@ -514,7 +514,7 @@ def save(self, **kwargs):
514
514
if isinstance (self .object , list ):
515
515
[self .save_object (item , ** kwargs ) for item in self .object ]
516
516
517
- if self .allow_add_remove and self . object ._deleted :
517
+ if self .object ._deleted :
518
518
[self .delete_object (item ) for item in self .object ._deleted ]
519
519
else :
520
520
self .save_object (self .object , ** kwargs )
@@ -779,24 +779,22 @@ def save_object(self, obj, **kwargs):
779
779
780
780
if getattr (obj , '_related_data' , None ):
781
781
for accessor_name , related in obj ._related_data .items ():
782
- field = self .fields .get (accessor_name , None )
783
- if isinstance (field , Serializer ):
784
- if field .many :
785
- # Nested reverse fk relationship
786
- for related_item in related :
787
- fk_field = obj ._meta .get_field_by_name (accessor_name )[0 ].field .name
788
- setattr (related_item , fk_field , obj )
789
- self .save_object (related_item )
790
-
791
- # Delete any removed objects
792
- if field .allow_add_remove and related ._deleted :
793
- [self .delete_object (item ) for item in related ._deleted ]
794
-
795
- else :
796
- # Nested reverse one-one relationship
782
+ if isinstance (related , RelationsList ):
783
+ # Nested reverse fk relationship
784
+ for related_item in related :
797
785
fk_field = obj ._meta .get_field_by_name (accessor_name )[0 ].field .name
798
- setattr (related , fk_field , obj )
799
- self .save_object (related )
786
+ setattr (related_item , fk_field , obj )
787
+ self .save_object (related_item )
788
+
789
+ # Delete any removed objects
790
+ if related ._deleted :
791
+ [self .delete_object (item ) for item in related ._deleted ]
792
+
793
+ elif isinstance (related , models .Model ):
794
+ # Nested reverse one-one relationship
795
+ fk_field = obj ._meta .get_field_by_name (accessor_name )[0 ].field .name
796
+ setattr (related , fk_field , obj )
797
+ self .save_object (related )
800
798
else :
801
799
# Reverse FK or reverse one-one
802
800
setattr (obj , accessor_name , related )
0 commit comments