docs: def serialize(self, attr, obj, accessor=None, **kwargs):
          """Pulls the value for the given key from the object, applies the
          field's formatting and returns the result.
  
          :param str attr: The attribute or key to get from the object.
          :param str obj: The object to pull the key from.
          :param callable accessor: Function used to pull values from ``obj``.
          :param dict kwargs': Field-specific keyword arguments.
          :raise ValidationError: In case of formatting problem
          """
          if self._CHECK_ATTRIBUTE:
              value = self.get_value(obj, attr, accessor=accessor)
              if value is missing_ and hasattr(self, 'default'):
                  default = self.default
                  value = default() if callable(default) else default
              if value is missing_:
                  return value
          else:
              value = None
          return self._serialize(value, attr, obj, **kwargs)