code: def register(self, model=None, include_fields=[], exclude_fields=[], mapping_fields={}):
          
          def registrar(cls):
              """Register models for a given class."""
              if not issubclass(cls, Model):
                  raise TypeError("Supplied model is not a valid model.")
  
              self._registry[cls] = {
                  'include_fields': include_fields,
                  'exclude_fields': exclude_fields,
                  'mapping_fields': mapping_fields,
              }
              self._connect_signals(cls)
  
              # We need to return the class, as the decorator is basically
              # syntactic sugar for:
              # MyClass = auditlog.register(MyClass)
              return cls
  
          if model is None:
              # If we're being used as a decorator, return a callable with the
              # wrapper.
              return lambda cls: registrar(cls)
          else:
              # Otherwise, just register the model.
              registrar(model)
docs: Register a model with auditlog. Auditlog will then track mutations on this model's instances.
  
          :param model: The model to register.
          :type model: Model
          :param include_fields: The fields to include. Implicitly excludes all other fields.
          :type include_fields: list
          :param exclude_fields: The fields to exclude. Overrides the fields to include.
          :type exclude_fields: list