Les modèles django et ses bases de données
Dans la partie précédente, on a vu comment utiliser les templates en django.
Maintenant, nous allons explorer un concept clé en Django : les modèles. Ils permettent de lire et d’écrire des données dans une base de données. Un modèle en Django est essentiellement une classe qui représente une table dans la base de données.
Créer un Modèle
Prenons l’exemple d’une application qui permet de poster des messages. Nous allons créer un modèle Message
qui représente un message dans la base de données. Ce modèle aura des attributs qui correspondent aux champs dans la table en base de données.
Voici comment créer un modèle Message
dans le fichier models.py
:
from django.db import models
from django.contrib.auth.models import User
class Message(models.Model):
content = models.CharField(max_length=280)
created_at = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
Décomposons chaque partie :
content
: Ce champ contient le texte du message. Nous utilisons un champCharField
avec une longueur maximale de 280 caractères, définie parmax_length=280
.created_at
: Pour la date de création du message, nous utilisonsDateTimeField
avec le paramètreauto_now_add=True
. Cela remplit automatiquement la date de création du message lors de sa création.user
: Chaque message est lié à un utilisateur. Pour cela, nous utilisons une clé étrangère avecForeignKey
. Nous lions le modèleUser
de Django, qui gère les utilisateurs, et nous précisons que lorsque l’utilisateur est supprimé, tous ses messages doivent l’être aussi (on_delete=models.CASCADE
).
Appliquer les Migrations
Une fois le modèle créé, il faut dire à Django de créer cette table dans la base de données. Cela se fait avec le processus de migration.
-
Appliquer les migrations existantes : Si vous avez des migrations non appliquées (messages en rouge), tapez la commande suivante dans le terminal :
python manage.py migrate
-
Créer une migration pour notre modèle : Django doit générer une migration spécifique à notre modèle
Message
. Utilisez la commande suivante pour créer cette migration :python manage.py makemigrations
Vous verrez un message confirmant que Django a détecté la création du modèle
Message
. -
Appliquer cette migration : Maintenant, nous devons appliquer cette migration pour que la table soit créée en base de données :
python manage.py migrate
Créer un Superutilisateur
Pour interagir avec les messages via l’interface d’administration Django, il nous faut un superutilisateur. Ce compte nous permettra de gérer les utilisateurs et les messages dans une interface graphique.
Créez un superutilisateur en tapant :
python manage.py createsuperuser
Django vous demandera un nom d’utilisateur, un email (facultatif), et un mot de passe. Une fois fait, relancez le serveur et connectez-vous à l’interface d’administration via http://127.0.0.1:8000/admin
.
Enregistrer le Modèle dans l’Administration
Pour pouvoir gérer les messages via l’interface d’administration, nous devons enregistrer notre modèle dans le fichier admin.py
de notre application. Ajoutez ceci à admin.py
:
from django.contrib import admin
from .models import Message
admin.site.register(Message)
En actualisant la page d’administration, vous verrez maintenant une nouvelle section « Messages ». Vous pouvez y créer, modifier et supprimer des messages.
Améliorer l’Affichage dans l’Admin
Actuellement, dans la page listant tous les messages, vous verrez juste “Message object (1)”, ce qui n’est pas très parlant. Pour améliorer cela, nous allons personnaliser l’affichage en modifiant admin.py
:
class MessageAdmin(admin.ModelAdmin):
list_display = ('content', 'user')
admin.site.register(Message, MessageAdmin)
Maintenant, chaque message affichera son contenu et le nom de l’utilisateur dans la liste.
Récupérer les Messages dans les Vues
Dans la prochaine vidéo, nous verrons comment récupérer ces messages depuis la base de données et les afficher dynamiquement sur notre site. Nous apprendrons également à créer de nouveaux messages directement depuis l’interface utilisateur, plutôt que via l’admin.
Et dans la prochaine partie de ce tutoriel, voyons comment utiliser l’ORM django.
Je m'appelle Thomas, et je code depuis plus de 20 ans. Depuis ma sortie de la première promotion de l'École 42, j'ai conçu et développé des centaines d'applications et de sites web. Sur ce blog, je partage avec vous les stratégies les plus efficaces pour maîtriser l'art de coder et progresser rapidement.