Se sobreescribe el método salvar para poder gestionar la creación de un
    User en caso que no se haya creado y enlazado uno antes.
    Se puede elegir si se desea guardar los cambios efectuados en user.

def save(self, UserSave=True, *args, **kwargs):
    """ Se sobreescribe el método salvar para poder gestionar la creación de un
    User en caso que no se haya creado y enlazado uno antes.
    Se puede elegir si se desea guardar los cambios efectuados en user.
    """

    if hasattr(self, 'user') and self.user is not None:
      # caso que se le asigna un usuario determinado
      if hasattr(self.user, 'usuario') and self.user.usuario is not None:
        # caso que se le haya asignado un usuario
        if self.user.usuario.pk != self.pk:
          # caso el usuario asignado ya tiene a otro
          raise IntegrityError("Debe ingresar User que no tenga relación con ningún Usuario existente.")
        else:
          # en este caso se debe revisar si hay que modificar User
          pass
    else:
      # caso que No tenga un usuario asignado de antemano
      if not hasattr(self, 'password') or not hasattr(self, 'username'):
        # caso que no tenga los atributos password y/o username
        raise IntegrityError("Debe ingresar los campos password y username si desea automatizar la creación de un User.")
      else:
        if not hasattr(self, 'first_name'):
          self.first_name = ""
        if not hasattr(self, 'last_name'):
          self.last_name = ""
        if not hasattr(self, 'email'):
          self.email = ""

        user = User(
          username=self.username,
          first_name=self.first_name,
          last_name=self.last_name,
          email=self.email
        )
        # almacenar password de forma segura
        user.set_password(self.password)
        user.save()
        self.user = user

        # eliminar los atributos que no se debiesen estar en la instancia
        for name in ['username', 'password', 'first_name', 'last_name', 'email']:
          delattr(self, name)

    # se guarda  Usuario y User en caso que se haya modificado
    super().save(*args, **kwargs)
    if UserSave:
      self.user.save()