- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Pour pouvoir définir de notre côté quelle est l'adresse qu'on souhaite utiliser par défaut,on va devoir rajouter un champ sur notre modèle Shipping Address,qui est tout simplement un booléen et qui va indiquer si cette adresse est l'adresse par défaut à utiliser.
00:00:14 :On va tout simplement l'appeler Default et ça va être un champ de type booléen field,qui par défaut va être égal à False.Ce qu'on va devoir faire, c'est changer quelle adresse est l'adresse préférée,donc l'adresse par défaut, quand on utilise cette méthode setDefault.
00:00:29 :Ce qu'on peut faire ici, c'est tout simplement faire Self.Default égale à True,et faire un Self.Save.Quand on va dire que cette adresse, par exemple ce qu'on avait fait dans la partie précédente,quand on disait S2.SetDefault, on modifiait cette information du côté de Stripe,
00:00:44 :et de notre côté, de la base de données, on va dire que S2 est l'adresse par défaut.Et après, si on passe à S1, on dit que c'est S1 qui est l'adresse par défaut.
00:00:52 :Le problème, c'est qu'actuellement, si on fait ça, les deux adresses vont être par défaut,parce qu'on va déjà dire que c'est S2, et ensuite que c'est S1.
00:00:59 :Donc ce qu'il faut faire, c'est remettre à zéro toutes les adresses à chaque fois.Donc on va devoir récupérer toutes les adresses qui sont associées à l'utilisateur,et dire que toutes ces adresses sont à False, donc que le Default est à False,pour ensuite uniquement passer l'adresse courante qu'on met à défaut à True.
00:01:16 :Donc ce qu'on va faire, c'est à partir de notre utilisateur, qu'on a dans Self.User,récupérer toutes les adresses.Ça, si vous vous souvenez bien, on peut utiliser le RelatedName qu'on avait mis ici, qui est Address.
00:01:28 :Donc je vais faire Self.User.Addresses comme ceci,ce qui va me permettre de récupérer toutes les adresses associées à l'utilisateur.Et là ici, on va récupérer une ou plusieurs adresses, ou zéro,enfin en tout cas, on peut avoir une liste d'adresses.
00:01:40 :Et pour mettre à jour un champ sur plusieurs éléments d'un coup,on peut utiliser la méthode Update, et on va dire dans ce cas-ci que Default est égal à False.
00:01:49 :Donc en fait, ça, ça va nous retourner un QuerySet,donc on va avoir zéro, une ou plusieurs adresses, donc on pourrait en avoir dix.Et plutôt que de faire une boucle, ce qui ne serait pas très efficace en fait,en disant qu'on boucle sur chaque adresse, et que sur chaque adresse, on va mettre un Default à False,
00:02:03 :eh bien en fait, on peut utiliser Update ici, qui va faire tout ça d'un coup.Donc ce qu'on fait ici, c'est vraiment remettre toutes les adresses par défaut à False,et ensuite uniquement sur Self, donc uniquement sur l'adresse en cours,la passer à True, et ensuite sauvegarder ça.
00:02:17 :Donc je vais appliquer les migrations, puisque pour l'instant,on n'a pas ces modifications dans la base de données,donc on va faire un Python Manage.py MakeMigrations pour indiquer qu'on a changé notre adresse.
00:02:27 :Donc là, vous voyez, on a AlterFieldUser,donc ça, c'est parce qu'en fait, on avait rajouté le RelatedName ici,et on n'avait pas fait de migration depuis, et le AddFieldDefault,donc c'est le field qu'on vient de rajouter.
00:02:39 :On va ajouter tout ça dans la base de données avec Migrate,et on va pouvoir retester notre script.Donc je vais refaire Python Manage.py Shell.
00:02:48 :On va réimporter les modèles, donc .models ImportShippingAddress.On va récupérer là encore, donc c'est exactement ce que j'ai fait dans la partie précédente,s1, s2, égale à ça, .objects, .all.
00:03:02 :Donc on a bien s1, s2, je vais un peu vite,mais c'est ce qu'on avait fait dans la partie précédente,donc là, c'est juste pour récupérer dans ces deux variables les deux adresses.
00:03:11 :Si je retourne dans ma base de données, donc sur le site ici,j'actualise, je vais voir chaque adresse,donc là le default est à false par défaut, donc ça c'est normal,et on va essayer de mettre cette adresse, donc la première, par défaut.
00:03:24 :Donc on va faire s1.7 default, je valide, je reviens ici,je vais voir dans mon modèle, on a bien default ici sur cette première adresse,et default qui n'est pas sur la deuxième adresse,et on va maintenant inverser les deux, on va dire s2.7 default,
00:03:42 :je reviens, et là normalement, donc si j'actualise cette adresse et l'adresse par défaut,et si je reviens sur la première, elle est décochée.Donc ça fonctionne, on a bien ce mécanisme avec un booléen ici sur toutes les adresses,et le default qui va passer à true uniquement sur l'adresse qu'on souhaite mettre par défaut grâce à cette méthode.
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.