Résolue

Retour sur le superuser

# Orienté objet # Django

Gabriel Trouvé

Mentor

Bonsoir,


Suite à ma question d'hier, là je vais vraiment isoler le code qui m'intéresse :

class CustomUserManager(BaseUserManager):
    # kwargs si prénom nom de famille etc...
def create_user(self, email, password, **kwargs):
        if not email:
            raise ValueError("Vous devez renseigner un email")

        user = self.model(email=self.normalize_email(email), **kwargs)
        user.set_password(password)
        user.save()
        return user

    def create_superuser(self, email, password, **kwargs):
        kwargs['is_staff'] = True
        kwargs['is_superuser'] = True
        kwargs['is_active'] = True
return self.create_user(email=email, password=password, **kwargs)


Dans la méthode create_superuser, (tient on va parler de kwargs ^^) :

is_staff is super_user et is_active ne sont pas retournés à la fin de la méthode create_superuser ?

A la fin de cette méthode on retourne create_user ?


ça veut dire qu'on va modifier les valeurs de ces 3 arguments mais on ne va pas les retourner ?


Merci

Bonjour,

Effectivement, dans la méthode create_superuser, les valeurs de is_staff, is_superuser et is_active sont modifiées en ajoutant les nouvelles valeurs à l'aide de la variable kwargs, mais elles ne sont pas retournées explicitement à la fin de la méthode.

Cependant, ces valeurs sont utilisées dans la méthode create_user, appelée à la fin de create_superuser. Dans cette méthode, ces valeurs sont passées à la création de l'objet user en tant qu'arguments nommés (**kwargs), ce qui signifie qu'elles seront incluses automatiquement dans l'objet user créé.

Donc, bien que ces valeurs ne soient pas retournées explicitement dans create_superuser, elles seront incluses dans l'objet user créé par la méthode create_user, qui est finalement retourné par create_superuser.

J'espère que cela clarifie les choses. N'hésitez pas à me demander des éclaircissements si nécessaire.

hello Gabriel,

en plus de la reponse de l´IA tu devrais pouvoir valoder avec le django shell et voir ce que te retourne la fonction.

Salut PA,

Donc comme dans create_superuser on retourne create_user, et comme on a modifié les valeurs de is_staff etc, dans les kwargs ils seront à True ?

oui c´est ça. un super user n´est rien d´autre qu´un user classique avec en plus le is_staff a True etc . La methode create_super_user retourne le resultat que va retourner la methode create user .

Gabriel Trouvé

Mentor

merci PA !

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.