Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
python:django:modeles [2023/11/12 09:08] marclebrun [Définition des modèles] |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Modèles ====== | ||
- | |||
- | ===== Définition des modèles ===== | ||
- | |||
- | Dans le module **models.py** d'une application : | ||
- | |||
- | <code python> | ||
- | from django.db import models | ||
- | |||
- | class Author(models.Model): | ||
- | name = models.CharField(max_length=100, unique=True) | ||
- | | ||
- | class Book(models.Model): | ||
- | title = models.CharField(max_length=200) | ||
- | quantity = models.IntegerField(default = 1) | ||
- | author = models.ForeignKey(Author, on_delete=models.DO_NOTHING) | ||
- | </code> | ||
- | |||
- | Paramètres : | ||
- | | blank | | | ||
- | | default | | | ||
- | | max_length | | | ||
- | | null | | | ||
- | | primary_key | True/False | | ||
- | | unique | True/False | | ||
- | | ... | | | ||
- | |||
- | Types : | ||
- | | BooleanField | | | ||
- | | CharField | | | ||
- | | DateField | | | ||
- | | DateTimeField | | | ||
- | | EmailField | | | ||
- | | FloatField | | | ||
- | | ForeignKey | Clé étrangère : Jointure vers un autre modèle | | ||
- | | IntegerField | | | ||
- | | ... | | | ||
- | |||
- | Valeurs pour **on_delete** : | ||
- | | models.CASCADE | | | ||
- | | models.DO_NOTHING | | | ||
- | | ... | | | ||
- | |||
- | ===== Administration ===== | ||
- | |||
- | Référencer le modèle dans l'administration de Django. | ||
- | |||
- | Dans le module **settings.py** du projet : | ||
- | |||
- | <code python> | ||
- | |||
- | </code> | ||
- | |||
- | |||
- | ===== Migrations ===== | ||
- | |||
- | Créer les migrations : | ||
- | |||
- | <code bash> | ||
- | python manage.py makemigrations [nom_application] | ||
- | </code> | ||
- | |||
- | Appliquer les migrations : | ||
- | |||
- | <code bash> | ||
- | python manage.py migrate | ||
- | </code> | ||
- | |||
- | ===== Requêtes ===== | ||
- | |||
- | Lire tous les enregistrements et accéder aux champs : | ||
- | |||
- | <code python> | ||
- | from .models import Book | ||
- | |||
- | books = Book.objects.all() | ||
- | |||
- | for book in books: | ||
- | |||
- | # lire les propriétés de la classe Book | ||
- | titre = book.title | ||
- | qte_stock = book.quantity | ||
- | | ||
- | # la jointure avec la classe Author se fait automatiquement | ||
- | nom_auteur = book.author.name | ||
- | </code> | ||
- | |||