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 | |
… |
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)
Créer les migrations :
python manage.py makemigrations
Appliquer les migrations :
python manage.py migrate
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