Introduction
L'un des concepts fondamentaux de Django est le modèle (Model). Les modèles sont au cœur de la gestion des données dans une application Django. Dans cet article, nous allons explorer ce qu'est un modèle, comment il fonctionne, et comment l'utiliser dans un projets.
Qu'est-ce qu'un modèle Django ?
Un modèle Django est une classe Python qui représente une table dans une base de données. Il définit la structure des données, les types de champs, et les relations entre les tables. De façon simple un modèle est une abstraction de la base de données qui permet de manipuler les données de manière orientée objet, sans avoir à écrire directement des requêtes SQL.
Création d'un Modèle
Un modèle est une classe qui hérite de django.db.models.Model. Chaque attribut de la classe représente un champ de la table dans la base de données.
Exemple :
from django.db import models
class Article(models.Model):
titre = models.CharField(max_length=200)
contenu = models.TextField()
date_publication = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.titre
titre : Un champ de type CharField pour stocker une chaîne de caractères (ici, le titre de l'article).
contenu : Un champ de type TextField pour stocker un texte long (le contenu de l'article).
date_publication : Un champ de type DateTimeField qui enregistre automatiquement la date et l'heure de création de l'article (auto_now_add=True).
La méthode __str__ est utilisée pour afficher une représentation lisible de l'objet (ici, le titre de l'article).
Types de champs disponibles
Django propose de nombre types de champs pour répondre à différents besoins :
CharField : Pour les chaînes de caractères courtes (exemple : nom, titre).
TextField : Pour les textes longs (ex : contenu d'un article).
IntegerField : Pour les nombres entiers.
BooleanField : Pour les valeurs booléennes (True/False).
DateField et DateTimeField : Pour les dates et heures.
EmailField : Pour les adresses e-mail.
ForeignKey : Pour les relations un-à-plusieurs entre modèles.
ManyToManyField : Pour les relations plusieurs-à-plusieurs.
Relations entre modèles
- Relation un-à-plusieurs (ForeignKey)
class Auteur(models.Model):
nom = models.CharField(max_length=100)
class Article(models.Model):
titre = models.CharField(max_length=200)
auteur = models.ForeignKey(Auteur, on_delete=models.CASCADE)
- Relation plusieurs-à-plusieurs (ManyToManyField)
class Tag(models.Model):
nom = models.CharField(max_length=50)
class Article(models.Model):
titre = models.CharField(max_length=200)
tags = models.ManyToManyField(Tag)
- Relation un-à-un (OneToOneField)
class Profil(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField()
Migrations
Les migrations sont un mécanisme de Django pour appliquer les modifications des modèles à la base de données. Chaque fois que vous modifiez un modèle, vous devez créer et appliquer une migration.
python manage.py makemigrations
python manage.py migrate
Ressources
Documentation officielle de Django sur les modèles