docs: def update(self, obj, set_fields = None, unset_fields = None, update_obj = True):
          """
          We return the result of the save method (updates are not yet implemented here).
          """
          if set_fields:
              if isinstance(set_fields,(list,tuple)):
                  set_attributes = {}
                  for key in set_fields:
                      try:
                          set_attributes[key] = get_value(obj,key)
                      except KeyError:
                          pass
              else:
                  set_attributes = set_fields
          else:
              set_attributes = {}
          if unset_fields:
              unset_attributes = unset_fields
          else:
              unset_attributes = []
  
          self.call_hook('before_update',obj,set_attributes,unset_attributes)
  
          if update_obj:
              for key,value in set_attributes.items():
                  set_value(obj,key,value)
              for key in unset_attributes:
                  delete_value(obj,key)
  
          return self.save(obj,call_hook = False)