- 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 :Dans cette partie, on va cette fois-ci associer plusieurs catégories à un même article de blog.Pour ça, je vais lancer un shell, donc python manage.py shell.
00:00:10 :On va importer tous les modèles dont on a besoin.Donc dans ce cas-ci, from blog.models, on va importer blog post et catégorie.Donc je mets une virgule pour séparer les deux.
00:00:19 :On va récupérer un article de blog.Pour faire simple, on va récupérer le dernier article que je vais mettre dans une variable last post.On va utiliser donc la classe blog post.object.last pour récupérer le dernier article de notre base de données.
00:00:32 :Si j'affiche le titre de l'article, il s'agit donc de l'article les modèles avec Django,qui a une clé primaire de 8, donc un identifiant de 8 dans la base de données.
00:00:41 :On va ensuite récupérer deux catégories, la catégorie Django et la catégorie Python.Pour ça, je vais faire deux variables que je vais appeler donc cat.python,
00:00:49 :qui va être égale à catégorie.object.get.Et on va récupérer avec le slug donc la catégorie Python.Et on va faire la même chose, mais cette fois-ci avec la catégorie Django,que je vais mettre donc dans une variable que j'appelle cat.django et le slug, c'est égal à Django.
00:01:04 :Donc j'ai bien mes deux catégories, j'ai mon article de blog,et je vais maintenant pouvoir relier cet article à ces deux catégories.Là, vous allez voir que c'est un peu différent.
00:01:13 :On ne peut pas passer par une assignation comme on l'a fait avec une clé étrangère,donc avec le foreign key ici.Si j'essaye de faire lastPost.catégorie égale à cat.python,
00:01:24 :et que je valide avec entrée, vous voyez qu'on a une erreur de type typeError,et ça nous dit qu'un assignement direct n'est pas possible.On nous conseille à la place d'utiliser set.
00:01:34 :Donc set, c'est une méthode qui va nous permettre d'assignerune ou plusieurs instances directement à notre article de blog.Donc on va faire lastPost.catégorie.set,et à l'intérieur de set, il va falloir mettre une liste.
00:01:46 :Donc vous mettez des crochets pour définir une liste,et à l'intérieur de ces crochets, vous pouvez mettre un ou plusieurs éléments.Donc dans notre cas, on va mettre cat.python et cat.django
00:01:55 :pour assigner ces deux catégories à notre article de blog.Je valide avec entrée, et cette fois-ci, si je fais lastPost.catégorie,que je valide en appuyant sur entrée,vous remarquez qu'on a un objet de type ManyRelatedManager.
00:02:08 :Donc ça, c'est un objet qui est similaire à ce qu'on aurait avec les query sets.Donc on va pouvoir utiliser exactement la même choseque ce qu'on pourrait utiliser sur un query set.
00:02:16 :Par exemple, la méthode All ou la méthode Filterqu'on avait vu dans des parties précédentes.Donc pour afficher toutes les catégories de mon post,je peux faire lastPost.catégorie,
00:02:25 :et ajouter à la suite All pour récupérer toutes les catégories.Si je voulais récupérer uniquement la dernière,je pourrais faire un Last pour récupérer la dernière catégorie assignée.
00:02:33 :Donc là encore, vous voyez que c'est exactement les mêmes méthodesqui sont accessibles sur cet objetque celles qui sont disponibles sur un query set.
00:02:40 :On peut également ajouter une catégorie avec la méthode Add.Donc je vais récupérer la catégorie Javascriptqui est donc égale à catégorie.object.get,et on va mettre le slug qui est égal à Javascript dans ce cas-ci.
00:02:52 :Donc ça va me permettre de récupérer ma catégorie Javascriptet je vais pouvoir l'ajouter aux catégories de mon article.Si j'utilise Set, ça va écraser les catégories qui sont déjà présentes.
00:03:02 :Moi, ce que je veux dans ce cas-ci, ce n'est pas écraser,mais ajouter une catégorie en plus.Pour ça, on va donc faire lastPost.catégorie.addet on va ajouter notre catégorie Javascript.
00:03:12 :Je valide avec entrée.Et là, vous voyez qu'on n'a pas besoin de faire de save.Si j'affiche toutes les catégories, donc avec lastPost.catégorie.all,vous allez voir qu'automatiquement, on a nos trois catégories,donc 1, 2 et 3 ici, qui sont associées à mon article.
00:03:26 :Donc à chaque fois qu'on utilise soit Set, soit Add,on n'a pas besoin de sauvegarder, ça se fait automatiquement.Si on retourne voir dans Table Plus maintenant,dans cette table Blog, Blog Post, Catégorie,on va retrouver les trois enregistrementsqui correspondent aux trois catégories associées à mon article.
00:03:42 :On a le Blog Post ID ici qui est égal à 8 à chaque foiset on a le Catégorie ID qui est égal à 1, 2 et 3.
00:03:49 :Donc on a bien la relation entre les deux identifiants,l'identifiant de mon article de blog et l'identifiant de la catégorie.Et vous comprenez maintenant pourquoi on a besoin d'une table intermédiaire,puisqu'ici, on a plusieurs valeurs.
00:04:00 :Donc on a plusieurs nombres entiersqui sont reliés à plusieurs autres nombres entiers.C'est pour ça qu'on ne peut pas le faire directement à l'intérieur de Blog Post,puisque dans un champ ici, dans une colonne,on ne peut avoir qu'une valeur de défini.
00:04:12 :Il n'est pas possible d'avoir plusieurs associations entre différents objetset quand on a une relation plusieurs à plusieurs entre deux modèles,on a besoin d'un moyen qui permet d'avoir ces associations entre plusieurs éléments.
00:04:24 :Donc ici, entre l'article 8 à chaque fois qui est relié à plusieurs catégories.Et on pourrait avoir également une même catégoriequi serait reliée à d'autres articles.
00:04:32 :Par exemple, si je veux associer la catégorie 1 à un autre article,donc par exemple à l'article 6,je peux le faire directement dans ma base de données ici.
00:04:40 :Je vais créer une autre entrée avec un ID de 4.On va mettre l'identifiant de mon article,donc c'est le 6 dans ce cas-ci,et on va lui associer la catégorie 1.
00:04:49 :Donc la catégorie 1, si on va voir dans la table Blog Category,il s'agit de la catégorie Django.Donc je reviens ici, je sauvegarde avec Command-Set nos changements ont bien été sauvegardés.
00:04:59 :On va pouvoir aller regarder dans l'échelle Pythonsi on a bien cette catégorie maintenantqui est associée à notre article numéro 6.Donc je reviens dans l'échelleet ici je vais récupérer l'article numéro 6,donc je vais faire une variable blogpostqui va être égale à blogpost.object.get
00:05:14 :pk égale 6et on va afficher les catégories sur ce blogpost.Donc blogpost.category.allet là on voit qu'on a bien la catégorieavec l'identifiant numéro 1qui est associée à cet article de blog.
00:05:27 :Donc vous voyez, c'est vraiment pas si compliqué.On a l'impression qu'il y a beaucoup de chosesavec la table qui s'est rajoutée,avec des clés un peu dans tous les sens,avec des identifiants, des nombres ici.
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.