code: def set(self, instance, value, **kwargs):
          
          value = self.preprocess_value(value)
          existing_uids = self.get_backreferences_for(instance)
  
          if not value and not existing_uids:
              logger.warning("Field and value is empty!")
              return
  
          if not self.multiValued and len(value) > 1:
              raise ValueError("Multiple values given for single valued field {}"
                               .format(repr(self)))
  
          set_uids = []
          for val in value:
              if api.is_uid(val):
                  set_uids.append(val)
              elif api.is_object(val):
                  set_uids.append(api.get_uid(val))
              else:
                  logger.error("Target has no UID: %s/%s" % (val, value))
  
          sub = filter(lambda uid: uid not in set_uids, existing_uids)
          add = filter(lambda uid: uid not in existing_uids, set_uids)
  
          for uid in set(existing_uids + set_uids):
              # The object to link
              target = api.get_object(uid)
              # Add reference to object
              if uid in add:
                  __traceback_info__ = (instance, uid, value, existing_uids)
                  self.add_reference(instance, target, **kwargs)
              # Delete reference to object
              elif uid in sub:
                  self.del_reference(instance, target, **kwargs)
docs: Set (multi-)references