Modèles et migrations
Définir et migrer la base de données
Modèles et migrations est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.
Les modèles Django
Un modèle Django est une classe Python qui définit la structure d’une table de base de données. Chaque attribut est un champ. Les modèles se trouvent dans le models.py d’une application.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
print('Post model defined')Types de champs
Django fournit de nombreux types de champs qui correspondent aux types de colonnes.
CharFieldpour les textes courts (nécessitemax_length)TextFieldpour les textes longsIntegerField,BooleanField,DateTimeField
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
views = models.IntegerField(default=0)
print('Fields map to columns')La clé primaire implicite
Django ajoute automatiquement à chaque modèle une clé primaire id à incrémentation automatique ; vous avez donc rarement besoin d’en déclarer une vous-même.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
# 'id' is added automatically
print('id field is automatic')Options des champs
Les champs acceptent des options telles que default, null, blank et unique pour contrôler leur comportement et leur validation.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
published = models.BooleanField(default=False)
subtitle = models.CharField(max_length=200, blank=True)
print('Options refine each field')Dates
DateTimeField(auto_now_add=True) enregistre la date et l’heure auxquelles une ligne est créée pour la première fois. auto_now=True la met à jour à chaque enregistrement.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
print('Timestamps set automatically')Relations
Reliez les modèles avec ForeignKey pour établir une relation un-à-plusieurs. on_delete indique à Django quoi faire lorsque la ligne référencée est supprimée.
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Post(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
print('ForeignKey links Post to Author')Que sont les migrations ?
Les migrations sont le mécanisme utilisé par Django pour transformer les modifications des modèles en modifications du schéma de la base de données. Elles jouent le rôle d’un contrôle de version pour votre base de données.
# Migrations record schema changes over time
# so the database matches your models
print('Migrations track schema changes')makemigrations
python manage.py makemigrations examine vos modèles et génère des fichiers de migration décrivant les modifications.
# python manage.py makemigrations
# -> blog/migrations/0001_initial.py
print('makemigrations writes migration files')migrate
python manage.py migrate applique les migrations en attente à la base de données, en créant ou en modifiant les tables.
# python manage.py migrate
# -> Applying blog.0001_initial... OK
print('migrate applies changes to the DB')Le processus de migration
La séquence est la suivante : modifiez models.py, exécutez makemigrations, puis exécutez migrate. Répétez cette procédure chaque fois que vos modèles changent.
# 1. Change models.py
# 2. python manage.py makemigrations
# 3. python manage.py migrate
print('Edit, make, migrate')Interroger les modèles
Chaque modèle reçoit un gestionnaire appelé objects pour effectuer des requêtes : Post.objects.all(), .filter(), .get() et .create().
# Post.objects.all()
# Post.objects.filter(published=True)
# Post.objects.get(id=1)
# Post.objects.create(title='Hello')
print('objects is the query manager')Vérification rapide
Vérifiez vos connaissances sur les migrations.
Récapitulatif
Vous avez défini des modèles et effectué leur migration.
- Les modèles sont des classes présentes dans
models.py, avec des champs typés - Django ajoute automatiquement une clé primaire
id ForeignKeyrelie les modèles ;on_deletedéfinit le comportement en cascademakemigrations, puismigrate, synchronisent la base de donnéesModel.objectspermet d’interroger les données
Questions Fréquemment Posées
La leçon « Modèles et migrations » est-elle gratuite ?
Oui — le texte complet de « Modèles et migrations » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Modèles et migrations » ?
Définir et migrer la base de données Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Python Academy ?
Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Modèles et migrations » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?
Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Projets et applications
- Modèles et migrations
- Vues et URL
- L’administration Django