====== Modèles ======
===== Définition des modèles =====
Dans le module **models.py** d'une application :
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.name
class Book(models.Model):
title = models.CharField(max_length=200)
quantity = models.IntegerField(default = 1)
author = models.ForeignKey(Author, on_delete=models.DO_NOTHING)
def __str__(self):
return self.title
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 **admin.py** de l'application :
from django.contrib import admin
from .models import Author, Book
admin.site.register(Author)
admin.site.register(Book)
===== Migrations =====
Créer les migrations :
python manage.py makemigrations
Appliquer les migrations :
python manage.py migrate
===== Requêtes =====
Lire tous les enregistrements et accéder aux champs :
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