Titre : Gestion des modèles et des migrations avec Django


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 et migrate.

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *