Django - Module 3
Modèles et ORM
Brahim Issa Hassaballah
1er mai 2026
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 1 / 22
Objectifs du module
Comprendre les modèles Django
Comprendre l’ORM
Créer une base de données
Effectuer des opérations CRUD
Gérer les relations entre tables
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 2 / 22
Définition : Base de données
Une base de données est un système de stockage structuré
Elle permet de stocker et manipuler des données
Exemple :
employés
salaires
départements
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 3 / 22
Définition : Modèle (Model)
Un modèle représente une table dans la base de données
Chaque attribut = colonne
Chaque objet = ligne
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 4 / 22
Définition : ORM
ORM = Object Relational Mapping
Permet de manipuler la base de données avec Python
Remplace SQL par du code Python
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 5 / 22
Avantages de l’ORM
Pas besoin d’écrire SQL
Code portable
Sécurité contre injection SQL
Gain de temps
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 6 / 22
Définition : Migration
Migration = mise à jour de la base de données
Permet de créer/modifier les tables
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 7 / 22
Commandes importantes
python manage . py makemigrations
python manage . py migrate
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 8 / 22
Types de champs
CharField : texte court
IntegerField : entier
DateField : date
EmailField : email
ForeignKey : relation
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 9 / 22
Relations entre tables
OneToOne : 1 à 1
ForeignKey : plusieurs vers 1
ManyToMany : plusieurs à plusieurs
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 10 / 22
TP : Gestion RH (Base de données)
Objectif :
Créer les tables :
Département
Employé
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 11 / 22
Étape 1 : [Link]
from django . db import models
class Departement ( models . Model ) :
nom = models . CharField ( max_length =100)
def __str__ ( self ) :
return self . nom
class Employe ( models . Model ) :
nom = models . CharField ( max_length =100)
email = models . EmailField ()
salaire = models . IntegerField ()
departement = models . ForeignKey ( Departement ,
on_delete = models . CASCADE )
def __str__ ( self ) :
return self . nom
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 12 / 22
Explication
[Link] : classe de base Django
CharField : texte
ForeignKey : relation
CASCADE : suppression liée
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 13 / 22
Étape 2 : migrations
python manage . py makemigrations
python manage . py migrate
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 14 / 22
Définition : CRUD
Create : créer
Read : lire
Update : modifier
Delete : supprimer
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 15 / 22
CREATE
dep = Departement . objects . create ( nom =" Informatique ")
Employe . objects . create (
nom =" Ali " ,
email =" ali@mail . com " ,
salaire =500 ,
departement = dep
)
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 16 / 22
READ
Employe . objects . all ()
Employe . objects . filter ( nom =" Ali ")
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 17 / 22
UPDATE
emp = Employe . objects . get ( id =1)
emp . salaire = 800
emp . save ()
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 18 / 22
DELETE
emp = Employe . objects . get ( id =1)
emp . delete ()
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 19 / 22
Managers personnalisés
Permet de créer des requêtes spécifiques
Exemple :
filtrer les employés avec salaire élevé
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 20 / 22
Exemple Manager
class EmployeManager ( models . Manager ) :
def hauts_salaires ( self ) :
return self . filter ( salaire__gt =1000)
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 21 / 22
Conclusion Module 3
Base de données créée
ORM maı̂trisé
CRUD opérationnel
Projet RH devient fonctionnel
Brahim Issa Hassaballah Django - Module 3 1er mai 2026 22 / 22