          self.opts = self._options_class(self.Meta)
          self.parent = None
          self.root = None
          self.partial = partial
          self.delete = False
  
          self.context = context or {}
  
          self.init_data = data
          self.init_files = files
 
</s> remove         data = {'id': 3, 'name': u'target-3', 'target_source': {'_delete': True, 'id': 3, 'name': u'target-source-3', 'source': {'id': 3, 'name': u'source-3'}}}
 </s> add         data = {'id': 3, 'name': u'target-3', 'target_source': None} </s> remove             if obj and (getattr(obj, pk_field_name) == pk_val):
                self.object = obj
                self.delete = native.get('_delete')

        obj = self.from_native(native, files)
        if not self._errors:
 </s> add  </s> remove             pk_val = native.get(pk_field_name)
 </s> add  </s> remove             into[self.source or field_name] = self
 </s> add         if value in (None, ''):
            self._delete = True
            into[(self.source or field_name)] = self
          self.opts = self._options_class(self.Meta)
          self.parent = None
          self.root = None
          self.partial = partial

  
          self.context = context or {}
  
          self.init_data = data
          self.init_files = files
keep keep keep keep replace keep keep keep keep keep
 Use None to delete nested object as opposed to _delete flag 
rest_framework/serializers.py