- 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 person
00:00:00 :Pour l'instant, on a créé notre modèle, mais il n'est pas dans notre base de données.On a juste créé la structure de notre modèle dans le fichier Python Models.py.
00:00:10 :Et maintenant, on va créer ce qu'on appelle des migrations.Donc, ça n'a rien à voir avec les oiseaux.C'est en fait tout simplement des fichiers Python qui vont nous permettrede créer dans notre base de données les tables correspondantesaux modèles qu'on a dans nos fichiers Models.py.
00:00:24 :Vous avez peut-être remarqué qu'on a un dossier migrationqui existe quand on crée une application.Pour l'instant, il ne contient rien, mais vous allez voirqu'on va pouvoir créer automatiquement avec Djangoles fichiers de migration et ensuite les appliqueravec le fichier manage.py.
00:00:40 :Pour ça, je vais ouvrir un terminal.Et à l'intérieur de ce terminal, je vais utiliser la commandepython manage.py make migrations.Donc, make migrations, comme ça, tout attaché en minusculeavec un S à migrations.
00:00:54 :Et on va pouvoir spécifier l'application pour laquelleon souhaite créer ces migrations.Par défaut, si vous ne mettez rien après make migrations,ça va créer les migrations pour toutes les applicationsde votre projet.
00:01:05 :Pour l'instant, on n'a qu'une seule application,l'application blog, donc ça n'a pas tellement d'importance.Mais si vous aviez plusieurs applications, vous pouvez spécifierl'application pour laquelle vous souhaitez créer ces migrations.
00:01:16 :Donc, je vais appuyer sur Entrée pour valider.Et vous voyez qu'il a détecté qu'on avait des migrationsà faire, notamment pour notre modèle blog post.
00:01:23 :Et ces migrations, il les a créées à l'intérieur du dossierMigrations dans ce fichier.Donc, on va aller voir à quoi ça ressemble.À l'intérieur du dossier, vous voyez qu'on a maintenantun nouveau fichier qui s'appelle 0001 initial.py.
00:01:36 :Donc, le nom du fichier est calculé automatiquement par Python.Vous pouvez également, lors de l'utilisation de cette commande,spécifier le nom des fichiers de migration.
00:01:45 :Mais à moins que vous ayez vraiment des besoins spécifiqueset que vous souhaitiez vous y retrouver plus facilementdans toutes les migrations qui vont être effectuéestout au long de la vie de votre projet,vous pouvez normalement par défaut laisser le nomqui va être utilisé par Django,qui est souvent assez descriptif.
00:01:59 :Dans ce cas-ci, c'est la première migration.Donc, il l'appelle initial.Et vous allez voir par la suite que ces migrations,quand on, par exemple, modifie un champ,eh bien, elles vont porter le nom du champet, par exemple, modified à côté.
00:02:11 :Donc, ça va être assez explicite qu'est-ce que cette migrationva faire dans notre base de données.Donc, on va aller voir à l'intérieur de ce fichier.
00:02:18 :Et vous allez voir qu'en fait, tout simplement,on va retrouver plus ou moins la structurede notre modèle qu'on avait dans models.py ici.Donc, tout en haut ici, on a la version de Djangoqui a été utilisée.
00:02:28 :Donc, dans ce cas-ci, la 3.1.6.Et la date et l'heure à laquelle cette migration a été créée.On a ensuite une classe migration.Dans ce cas-ci, c'est la première migration.
00:02:38 :Donc, on a cet attribut initial qui est égal à true.Pour l'instant, on n'a aucune dépendancepuisque c'est la première migration que l'on fait.Mais quand on aura d'autres migrations,vous allez voir qu'on aura des dépendancesentre ces migrations.
00:02:50 :Si on regarde à l'intérieur des opérationsqui vont être effectuées pour cette migration,on a la création d'un modèle.Puisque actuellement, notre modèle n'existe pasdans la base de données.
00:02:58 :Donc, il va falloir que Django crée ce modèledans notre base de données.On a le nom du modèle et ensuite,les champs qui vont être créés.
00:03:06 :Vous remarquez ici qu'on a le champ IDqui correspond donc à cette fameuse clé primairequi est créée pour nous par Django.Donc, sans qu'on ait besoin de le rajouter ici,automatiquement, dans la migration,au moment de créer le modèle,il va rajouter cette clé primaireavec le nom de ID.
00:03:21 :Et vous retrouvez ici le paramètre Primary Keyqui spécifie que ce champ doit être utiliséen tant que clé primaire.Pour le reste, vous voyez que c'est assez similaireà ce qu'on avait dans le fichier models.py ici.
00:03:33 :On va avoir le nom du champet ensuite, le type de champqui va être utilisé par Djangoavec également les paramètresque l'on va utiliser pour chaque champ.
00:03:42 :Donc, ça ressemble beaucoup à ce qu'on avaitdans notre fichier models.py.Donc, vous pouvez vous demanderà quoi peut bien servir cette migration.Les migrations, c'est un sujet très complexe.
00:03:51 :On pourrait faire une formation complète sur le sujet.Moi, je vais vous montrer vraiment juste la base ici.C'est quelque chose qui peut rapidementdevenir assez compliqué.
00:03:59 :Et si vous avez des problèmes avec ces migrations,ça peut être également un peu compliqué à fixer.Pour l'instant, il faut juste comprendreque ces migrations vont nous permettrede recréer à tout momentl'état de notre base de données.
00:04:11 :Ces migrations, elles vont être crééesà chaque fois qu'on a un changement dans nos modèles.Dans ce cas-ci, le changement sur notre modèle,c'est tout simplement la création du modèle.
00:04:19 :Mais vous allez voir que par exemple,si on rajoute des champs à notre modèleou qu'on modifie des champs à notre modèleou même qu'on supprime un modèle,à chaque fois, on va créer des fichiers de migrationqui vont répertorier ces changements.
00:04:31 :Donc, c'est un peu comme un historiquede la vie de votre base de données.C'est pour ça que c'est très important.Et c'est notamment très importantquand vous allez travailler avec d'autres personnespuisque quelqu'un qui arrive sur le projetpourrait très facilement recréer l'étatde la base de données
00:04:44 :au moment où il arrive sur le projetgrâce à toute cette historique de migration.Donc, si je reviens dans mon terminal,vous allez voir qu'une fois qu'on a créé cette migration,si on essaye de la recréer,Python aura détecté qu'il n'y a eu aucun changemententre la migration qu'on a créée actuellement
00:05:00 :et notre fichier models.py ici.Par contre, si à la suite ici,je rajoute un champ, par exemple description,et que je dis que c'est encore un textfield dans ce cas-ci,là, il va y avoir un changemententre notre fichier models.py
00:05:13 :et la migration qu'on a créée.Donc, Django va être au courantqu'il faut créer un nouveau fichier de migration.Et donc, si on relance cette commande,vous allez voir qu'il va automatiquementcréer une nouvelle migration.
00:05:24 :Dans ce cas-ci, il y a quelque chose qui est affichéqui nous indique qu'en fait,on n'a pas de valeur par défautpour ce champ description.
00:05:31 :Donc, dans ce cas-ci,on va devoir donner une valeur par défaut,soit directement dans le terminal.Donc ça, c'est l'option numéro 1.On peut choisir de définir une valeur par défautpour ce champ directement ici,ou alors, on peut quitter et ajouterla valeur par défaut directement dans notre fichier,
00:05:47 :donc dans le fichier models.py.Alors, pourquoi il nous demande une valeur par défaut ?Eh bien, tout simplement,parce que quand on aura déjà créénotre table dans la base de donnéessans ce champ de présent,on aura potentiellement des valeursqui vont être entrées dans la base de données
00:06:02 :qui n'auront pas de valeur définiepour le champ qu'on a rajouté.Donc, pour qu'on n'ait pas d'erreurdans notre base de données,il faut que Django puisse ajouterune valeur par défaut à ce champque l'on va rajouter dans notre table.
00:06:14 :Donc là, dans ce cas-ci, dans le terminal,je peux choisir de mettre une option par défaut,donc je vais choisir l'option numéro 1.Là, il va rentrer dans un interprèteur Pythondans lequel je peux taper la valeur par défautque je souhaite assigner au champ qu'on a rajouté.
00:06:27 :Donc, dans ce cas-ci,c'est un champ qui est du type texte,donc je vais tout simplementmettre une chaîne de caractère vide.Donc là, vous voyez que cette migrationa été correctement effectuéeet qu'on a cette fois-ci un nouveau fichierqui a été créé.
00:06:39 :Comme je vous disais, avec une description,donc un nom assez explicite dans le nom du fichier,donc bloc post description.Donc, si on retourne voir dans notre projet,vous allez voir ici qu'on a une deuxième migrationqui a été créée.
00:06:50 :Et si je reviens là dans mon fichier,donc dans le fichier 0002 bloc post description,on a cette fois-ci une dépendanceentre le fichier 0001 initial et ce fichier ici.
00:07:01 :Donc, vous voyez que ces migrations,elles sont liées les unes aux autres.Donc, c'est pour ça qu'il y a vraiment des processusqui peuvent être en fait assez compliquéssi jamais vous avez des migrationsqui ne fonctionnent pas correctementet qu'il faut fixer les choses.
00:07:12 :Vous avez des dépendances comme çaet ça peut devenir assez rapidement compliquéà régler si vous avez des soucis avec tout ça.Mais normalement, si vous faites les choses bien,il n'y a pas de raison d'avoir des soucisavec les migrations.
00:07:23 :Qu'est-ce qu'on a ici ?Donc, comme opération,on n'a plus le create modelqu'on avait dans le fichier 001puisque là, notre modèle existe à ce momentdans la base de données.
00:07:32 :Et ce qu'on va faire tout simplement,c'est modifier notre tabledans la base de données.Donc, notre table, elle s'appelle blog post,elle a un nom de descriptionet c'est un champ de type text fieldavec une valeur par défaut iciqui est égale à une chaîne de caractère vide.
00:07:45 :Donc, vous voyez que ces migrations,ça permet vraiment de faire le lienentre vos modèles et votre base de données.Pour l'instant, on a juste crééles fichiers de migration.