Introduction
Dans Django, les modèles représentent la structure de vos données, c’est-à-dire les tables de votre base de données. Grâce au système de migrations, Django est capable de traduire automatiquement vos modèles Python en instructions SQL, de les créer ou les modifier, et de maintenir la synchronisation avec votre base de données.
Dans cet article, vous allez apprendre à créer des modèles personnalisés, exécuter des migrations, interagir avec la base via l'ORM Django, et gérer les modifications de schéma en toute sécurité.
1. Qu’est-ce qu’un modèle dans Django ?
Un modèle est une classe Python qui hérite de models.Model
. Chaque attribut de cette classe correspond à une colonne dans la base de données.
Exemple de modèle :
from django.db import models
class Article(models.Model):
titre = models.CharField(max_length=100)
contenu = models.TextField()
date_publication = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.titre
2. Créer un modèle
Dans models.py
de votre application :
class Utilisateur(models.Model):
nom = models.CharField(max_length=50)
email = models.EmailField(unique=True)
actif = models.BooleanField(default=True)
Chaque fois que vous créez ou modifiez un modèle, vous devez faire des migrations.
3. Générer et appliquer les migrations
Étape 1 : Créer une migration
python manage.py makemigrations
Étape 2 : Appliquer les migrations
python manage.py migrate
Cela va créer (ou modifier) les tables dans la base de données.
4. Comprendre les fichiers de migration
Après makemigrations
, Django crée un fichier dans migrations/
, contenant les instructions SQL générées. Vous pouvez les lire pour comprendre les modifications apportées à votre base.
5. Insérer des données via le shell
python manage.py shell
from monapp.models import Utilisateur
u = Utilisateur(nom="Alice", email="alice@example.com")
u.save()
6. Lire des objets depuis la base
# Tous les utilisateurs
Utilisateur.objects.all()
# Filtrer
Utilisateur.objects.filter(actif=True)
# Premier utilisateur
Utilisateur.objects.first()
7. Modifier et supprimer des objets
u = Utilisateur.objects.get(id=1)
u.nom = "Alice Modifiée"
u.save()
# Supprimer
u.delete()
8. Ajouter des options aux modèles
Ordre d'affichage par défaut
class Meta:
ordering = ['-date_publication']
Nom humain du modèle
class Meta:
verbose_name = "Utilisateur"
verbose_name_plural = "Utilisateurs"
9. Ajouter des champs à un modèle existant
Ajoutez un champ dans la classe, par exemple :
age = models.IntegerField(null=True)
python manage.py makemigrations
python manage.py migrate
Django vous demandera une valeur par défaut si nécessaire.
10. Utiliser le back-office Django pour gérer les modèles
Dans admin.py
:
from django.contrib import admin
from .models import Utilisateur
admin.site.register(Utilisateur)
Accédez à http://localhost:8000/admin pour créer, modifier ou supprimer vos objets.
11. Supprimer un champ ou un modèle
- Supprimez le champ ou la classe du modèle.
- Exécutez
makemigrations
etmigrate
.
12. Réinitialiser la base (développement)
⚠️ Pour tout réinitialiser (utile en phase de test) :
python manage.py flush
Conclusion
La gestion des modèles et des migrations avec Django permet de créer des bases de données puissantes sans écrire une seule ligne de SQL. En modifiant vos classes Python, Django génère et applique automatiquement les bons changements, tout en vous laissant le contrôle total. C’est un outil idéal pour structurer vos données proprement et évoluer rapidement.