Aquí hay un fragmento de código de los modelos de autenticación de Django (UserManager):
def create_superuser(self, username, email, password, **extra_fields): extra_fields.setdefault('is_staff', True) extra_fields.setdefault('is_superuser', True) if extra_fields.get('is_staff') is not True: raise ValueError('Superuser must have is_staff=True.') if extra_fields.get('is_superuser') is not True: raise ValueError('Superuser must have is_superuser=True.') return self._create_user(username, email, password, **extra_fields)¿Por qué establecer un par clave-valor y comprobarlo inmediatamente después? ¿En qué escenario se cumplirían estas condiciones?
setdefault establece el valor solo si la clave aún no está presente en el dict. La persona que llama a la función aún podría pasar extra_fields con algunos valores de id_staff o is_superuser .
Lo que hace esta función es que, al crear un superusuario, si la función de llamada no proporciona ningún valor, establezca is_staff e is_superuser en True para este usuario.
Pero, si se proporcionan los valores, compruebe si son True y genere excepciones de lo contrario.