Article original : How to Create Models in Your Django Project

Si vous construisez quelque chose avec Django, il y a une chose que vous ne pouvez pas sauter : créer des modèles. Les modèles sont le cœur de toute application Django. Ils définissent comment vos données sont structurées, comment elles sont stockées dans la base de données et comment Django peut interagir avec elles.

Maintenant, si vous êtes nouveau dans Django ou si vous essayez encore de comprendre les bases, ne vous inquiétez pas. J'ai été là aussi. Les modèles peuvent sembler un peu intimidants au début, mais ils sont assez simples une fois que vous voyez comment ils fonctionnent.

Je vais vous guider à travers tout cela, étape par étape, afin qu'à la fin de cet article, vous sachiez non seulement comment créer des modèles, mais aussi comment les utiliser dans des projets réels.

Commençons.

Voici ce que nous allons couvrir :

  1. Qu'est-ce qu'un modèle dans Django ?

  2. Comment créer des modèles dans Django

  3. Fonctionnalités supplémentaires des modèles que vous utiliserez

  4. Utilisation des modèles dans l'admin Django

  5. FAQ

  6. Réflexions finales

Qu'est-ce qu'un modèle dans Django ?

Un modèle dans Django est simplement une classe Python qui indique à Django comment vous voulez que vos données soient structurées. Django s'occupe de la partie difficile (communiquer avec la base de données), afin que vous puissiez vous concentrer sur la description de vos données en code Python simple.

Voici un exemple rapide d'un modèle de base :

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    published_date = models.DateField()
    price = models.DecimalField(max_digits=5, decimal_places=2)

Permettez-moi de le décomposer :

  • title et author sont simplement des morceaux de texte courts, donc j'utilise CharField.

  • published_date est une date - assez simple, c'est à cela que sert DateField.

  • price est un nombre avec des décimales, donc DecimalField fait le travail.

Chaque ligne décrit une partie des données que je veux stocker pour chaque livre. Simple, non ?

Comment créer des modèles dans Django

Étape 1 : Démarrer un projet Django (si ce n'est pas déjà fait)

Si vous êtes tout nouveau, vous avez d'abord besoin d'un projet Django :

django-admin startproject mysite
cd mysite
python manage.py startapp books

Maintenant, vous avez une application Django appelée books où vous pouvez mettre vos modèles.

Étape 2 : Définir votre modèle

À l'intérieur de votre dossier d'application (books), ouvrez models.py. C'est là que vous définirez votre modèle.

Voici un exemple un peu plus réaliste :

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)
    birthdate = models.DateField()

    def __str__(self):
        return self.name


class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    summary = models.TextField()
    isbn = models.CharField(max_length=13, unique=True)
    published = models.DateField()
    price = models.DecimalField(max_digits=6, decimal_places=2)

    def __str__(self):
        return self.title

Ce qui se passe ici :

  • J'ai créé deux modèles : Author et Book.

  • Book a une relation avec Author en utilisant ForeignKey. Cela signifie qu'un auteur peut avoir plusieurs livres.

  • J'utilise __str__() pour retourner un nom agréable lorsque je regarde les objets dans l'admin Django.

Étape 3 : Enregistrer l'application et créer la base de données

Avant que Django puisse utiliser vos modèles, assurez-vous que votre application est ajoutée aux paramètres du projet.

Ouvrez mysite/settings.py et trouvez la liste INSTALLED_APPS. Ajoutez 'books', à celle-ci :

INSTALLED_APPS = [
    # autres applications
    'books',
]

Maintenant, exécutez les migrations pour créer les tables de la base de données pour vos modèles :

python manage.py makemigrations
python manage.py migrate

C'est ainsi que Django transforme votre code Python en tables de base de données réelles. La première commande crée un fichier de migration (basiquement, des instructions pour la base de données), et la seconde l'applique.

Étape 4 : Créer et utiliser des objets

Maintenant, vous pouvez utiliser ces modèles dans votre code. Ouvrez le shell Django :

python manage.py shell

Puis essayez ceci :

from books.models import Author, Book
from datetime import date

# Créer un auteur
jane = Author.objects.create(name="Jane Austen", birthdate=date(1775, 12, 16))

# Créer un livre
book = Book.objects.create(
    title="Pride and Prejudice",
    author=jane,
    summary="Un roman sur les manières et le mariage en Angleterre au début du 19ème siècle.",
    isbn="1234567890123",
    published=date(1813, 1, 28),
    price=9.99
)

print(book)

Django enregistrera automatiquement ces données dans votre base de données.

Fonctionnalités supplémentaires des modèles que vous utiliserez

1. Valeurs par défaut

Vous pouvez donner à un champ une valeur par défaut :

is_published = models.BooleanField(default=False)

2. Horodatages automatiques

Ceux-ci sont super utiles pour suivre les heures de création ou de mise à jour :

created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

3. Options Meta du modèle

Vous pouvez ajouter class Meta pour personnaliser des choses comme le tri par défaut :

class Book(models.Model):
    # champs...

    class Meta:
        ordering = ['published']

Utilisation des modèles dans l'admin Django

Le panneau d'administration intégré de Django est l'une des meilleures parties du framework. Mais vos modèles n'y apparaîtront pas à moins que vous ne les enregistriez.

Dans books/admin.py, ajoutez :

from django.contrib import admin
from .models import Author, Book

admin.site.register(Author)
admin.site.register(Book)

Maintenant, exécutez :

python manage.py createsuperuser

Puis allez sur http://127.0.0.1:8000/admin, connectez-vous, et voilà - vos modèles sont là, avec une interface complète.

FAQ

Puis-je modifier un modèle après l'avoir créé ?

Oui, mais vous devrez créer une nouvelle migration :

python manage.py makemigrations
python manage.py migrate

Quelles bases de données fonctionnent avec Django ?

Django fonctionne avec PostgreSQL, MySQL, SQLite (par défaut), et plus encore. La plupart des gens commencent avec SQLite lorsqu'ils apprennent car c'est facile et ça fonctionne directement.

Quelle est la différence entre CharField et TextField ?

Utilisez CharField pour du texte court avec une longueur maximale (comme un nom ou un titre). Utilisez TextField pour du texte plus long (comme un article de blog ou un résumé).

Réflexions finales

Une fois que vous comprenez les modèles, le reste de Django commence à s'emboîter. Tout - les formulaires, les vues, les templates - finit par se connecter au modèle. C'est ainsi que votre application stocke et travaille avec des données réelles.

La meilleure façon d'apprendre est de construire quelque chose. Commencez petit, peut-être un catalogue de livres, un gestionnaire de tâches ou un blog personnel. Ajoutez des modèles un à la fois et jouez avec eux dans l'admin.

Ressources supplémentaires