Ajouter un modèle pour l'adresse de livraison
Exclusif Premium
Débloquez votre potentiel ! ✨
Cette session fait partie de notre programme Premium exclusif
+100h de formations exclusives
+180 exercices de code avancés
+100h de mentorats en réécriture
20 projets guidés pas à pas
Mentorats groupés hebdomadaires
Support individuel avec nos mentors
Prêt à passer au niveau supérieur ?
Découvrez tous les avantages Premium et transformez votre apprentissage dès aujourd'hui!
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compteToutes les questions

Gabriel Trouvé
21 mars 2023
Résolue
5 réponses
Retour sur le superuser
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
00:00:00 :Dans cette partie, on va voir comment ajouter un modèle qui va nous servir pour l'adresse delivraison. Puisqu'on a un site e-commerce, on va donc devoir récupérer l'adresse de livraison de
00:00:09 :l'utilisateur et également lui permettre d'en avoir plusieurs. On voit ça assez régulièrement,vous pouvez ajouter plusieurs adresses de livraison, en mettre une que vous allezpréférer par défaut, donc avoir cette adresse qui va être utilisée lorsque vous passez commandeet avoir d'autres adresses au cas où dans votre compte utilisateur. Donc on va créer ça à
00:00:26 :l'intérieur de ce fichier models.accounts puisque ce modèle va être relié au modèled'utilisateur, donc c'est logique de le mettre à l'intérieur de cette application de gestion descomptes. Donc on va créer un nouveau modèle, on va créer une classe qui va s'appeler Shipping
00:00:40 :Address tout simplement et qui va hériter de models.models. Qu'est-ce qu'on va faire commechamp à l'intérieur de cette classe ? Il y a des champs assez classiques, on va récupérer déjà
00:00:50 :l'utilisateur puisqu'on va associer cette adresse à un utilisateur, donc un utilisateur qui estdéfini juste au-dessus l'utilisateur shopper. Donc on va faire ici models.foreignkey, donc
00:01:01 :foreignkey ici puisque c'est une relation plusieurs à un, on pourrait avoir plusieurs adresses delivraison rattachées à un même utilisateur, donc ce n'est pas dans ce cas-ci comme avec le panieroù on avait un one-to-one, dans ce cas-ci on va utiliser un foreignkey. On va relier ça au shopper
00:01:15 :et on va dire undelete égale models.cascade, donc ça veut dire que si on supprime l'utilisateur onva également supprimer les adresses de livraison associées. Ensuite on va donner un nom à cette
00:01:26 :adresse puisqu'on va pouvoir nommer avec une chaîne de caractère ces différentes adresses, parexemple avoir l'adresse de chez vous, l'adresse du travail ou des choses du genre. Donc on va
00:01:35 :pouvoir identifier ces adresses avec un nom et on va mettre une longueur maximale qui va être parexemple de 240. On va ensuite avoir une première ligne d'adresse que je vais appeler adresse1 qui
00:01:44 :va là encore être un charfield. En longueur on va être un peu plus permissif, on va mettre 1024,c'est vraiment énorme mais ça devrait couvrir vraiment tous les besoins. Et on va également
00:01:53 :rajouter ce qu'on appelle un help text. Donc un help text est tout simplement un texte quiva être affiché dans l'interface d'administration et qui va nous permettre de savoir de quoi ils'agit. Ça peut être également une chaîne de caractère affichée dans d'autres contextes comme
00:02:06 :par exemple des formulaires, donc que ce soit un formulaire sur votre site ou l'interfaced'administration, ça permettra de savoir facilement de quoi il s'agit. Donc là dans ce cas-ci on va
00:02:14 :mettre adresse de voirie et numéro de rue. Et on va créer une deuxième donc un deuxième champici que je vais appeler adresse2. Donc ça c'est assez classique dans les champs d'adresse, vous
00:02:24 :avez une première adresse pour mettre le nom, le numéro de la rue et le nom de la rue. Et ensuitesi vous avez par exemple un étage, un bâtiment, un lieu dit etc on le met dans une deuxième ligne.
00:02:34 :Donc je vais mettre ici bâtiment, étage, virgule, lieu dit. Donc là c'est juste vraiment le textedead. Et celle-ci on va dire blank égale à true, puisqu'il arrive qu'on n'ait pas de bâtiment, pas
00:02:45 :d'étage, et donc on peut laisser cette deuxième adresse vide. On va ensuite mettre city, donc laville, là encore ça va être un charfield. Et on va garder une longueur maximale de 1024, donc ça
00:02:55 :m'étonnerait qu'il y ait des noms de villes qui fassent 1024 caractères, mais là encore on ne saitjamais, des fois ça peut être assez long. Et en zip code, et bien là tout simplement on va mettre
00:03:03 :un charfield. Donc un charfield parce que là encore les zip codes ça peut dépendre des pays, parexemple au canada vous allez avoir des trucs du genre h3n, h3n1z5, un truc du genre. Et donc là
00:03:15 :dans ce cas-ci on va avoir à la fois des chiffres et des lettres, et même des espaces. Donc on vamettre un charfield ici et non pas un nombre, puisque on pourrait avoir des lettres. Et en
00:03:26 :longueur maximale on va mettre quelque chose comme 24 ou 32, ça devrait être largement suffisant.Donc voilà pour le modèle de base, et on va donc appliquer ces migrations dans le terminal. Donc
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.