OUJOOD.COM
Ce qu'est un modèle Django
Un modèle Django est une classe Python qui décrit la structure d'une table en base de données. Chaque attribut de classe correspond à une colonne. Django lit ces classes et génère le SQL correspondant — vous n'écrivez pas de CREATE TABLE à la main.
Deux règles fondamentales :
- Chaque modèle hérite de
django.db.models.Model. - Chaque attribut de classe est une instance d'un type de champ Django (
CharField,IntegerField,DateField...) qui correspond à un type de colonne SQL.
Django gère aussi automatiquement une colonne id en clé primaire auto-incrémentée sur chaque table, sauf si vous en définissez une vous-même.
La base de données SQLite par défaut
Quand vous avez créé le projet dans le chapitre Créer un projet Django, Django a généré un fichier db.sqlite3 à la racine du projet. C'est la base de données SQLite utilisée par défaut en développement — aucune installation de serveur de base de données nécessaire. Pour un projet en production, vous la remplacerez par PostgreSQL ou MySQL, mais pour apprendre, SQLite est parfait.
Créer le modèle Membres
Ouvrez membres/models.py. Django l'a créé avec ce contenu minimal :
from django.db import models
# Create your models here.
Ajoutez la classe Membres avec trois champs texte :
from django.db import models
class Membres(models.Model):
# CharField stocke une chaîne de caractères, max_length est obligatoire
prenom = models.CharField(max_length=255)
nom = models.CharField(max_length=255)
mail = models.CharField(max_length=255)
Les trois champs utilisent CharField, adapté aux textes courts. Le paramètre max_length est obligatoire sur CharField — il fixe la taille maximale de la colonne en base de données. Django ajoutera automatiquement une colonne id (entier, clé primaire, auto-incrémentée) sans que vous ayez à la déclarer.
Générer la migration
Le modèle existe dans le code Python, mais la table n'existe pas encore en base de données. La migration est le fichier intermédiaire que Django génère pour traduire vos modèles en SQL. Depuis le dossier contenant manage.py, lancez :
python manage.py makemigrations membres
Django crée le fichier membres/migrations/0001_initial.py et confirme :
Migrations for 'membres':
membres\migrations\0001_initial.py
- Create model Membres
Ce fichier contient les instructions Python que Django sait transformer en SQL. Ne le modifiez pas à la main — Django le gère.
Appliquer la migration
La migration est générée, mais pas encore exécutée. La commande migrate lit tous les fichiers de migration en attente et les applique à la base de données :
python manage.py migrate
La sortie confirme que la table a été créée :
Operations to perform: Apply all migrations: admin, auth, contenttypes, membres, sessions Running migrations: Applying membres.0001_initial... OK
La table membres_membres existe maintenant dans db.sqlite3. Django préfixe automatiquement le nom de la table avec le nom de l'application — ici membres_ + membres. En SQL, la requête exécutée correspond à :
CREATE TABLE "membres_membres" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"prenom" varchar(255) NOT NULL,
"nom" varchar(255) NOT NULL,
"mail" varchar(255) NOT NULL
);
La règle des deux commandes
À retenir : chaque fois que vous modifiez un fichier models.py — ajout de champ, suppression, changement de type — vous devez toujours exécuter ces deux commandes dans l'ordre :
# 1. Génère le fichier de migration (détecte les changements) python manage.py makemigrations # 2. Applique les migrations en attente à la base de données python manage.py migrate
makemigrations détecte les différences entre vos modèles et l'état actuel de la base, et génère le fichier de migration. migrate exécute ce fichier et met la base à jour. Les deux sont indispensables — l'un sans l'autre ne fait rien d'utile.
Dans le chapitre suivant, vous allez ajouter des données dans cette table directement depuis le code Python, et les afficher dans un template.
Par carabde | Mis à jour le 05 mai 2025