docs: def depopulate(self, is_update):
          """Get all the fields that need to be saved
  
          :param is_udpate: bool, True if update query, False if insert
          :returns: dict, key is field_name and val is the field value to be saved
          """
          fields = {}
          schema = self.schema
          for k, field in schema.fields.items():
              is_modified = k in self.modified_fields
              orig_v = getattr(self, k)
              v = field.iset(
                  self,
                  orig_v,
                  is_update=is_update,
                  is_modified=is_modified
              )
  
              if is_modified or v is not None:
                  if is_update and field.is_pk() and v == orig_v:
                      continue
  
                  else:
                      fields[k] = v
  
          if not is_update:
              for field_name in schema.required_fields.keys():
                  if field_name not in fields:
                      raise KeyError("Missing required field {}".format(field_name))
  
          return fields