code: async def update(self, obj, only=None):
          
          field_dict = dict(obj.__data__)
          pk_field = obj._meta.primary_key
  
          if only:
              self._prune_fields(field_dict, only)
  
          if obj._meta.only_save_dirty:
              self._prune_fields(field_dict, obj.dirty_fields)
  
          if obj._meta.composite_key:
              for pk_part_name in pk_field.field_names:
                  field_dict.pop(pk_part_name, None)
          else:
              field_dict.pop(pk_field.name, None)
  
          query = obj.update(**field_dict).where(obj._pk_expr())
          result = await self.execute(query)
          obj._dirty.clear()
          return result
docs: Update the object in the database. Optionally, update only
          the specified fields. For creating a new object use :meth:`.create()`
  
          :param only: (optional) the list/tuple of fields or
                       field names to update