code: def transform(self, value, **kwargs):
          
          if value is None:
              return None
  
          objid = id(value)
          if objid in self.context:
              return '<...>'
          self.context.add(objid)
  
          try:
              for serializer in self.serializers:
                  try:
                      if serializer.can(value):
                          return serializer.serialize(value, **kwargs)
                  except Exception as e:
                      logger.exception(e)
                      return text_type(type(value))
  
              # if all else fails, lets use the repr of the object
              try:
                  return repr(value)
              except Exception as e:
                  logger.exception(e)
                  # It's common case that a model's __unicode__ definition
                  # may try to query the database which if it was not
                  # cleaned up correctly, would hit a transaction aborted
                  # exception
                  return text_type(type(value))
          finally:
              self.context.remove(objid)
docs: Primary function which handles recursively transforming
          values via their serializers