Comment un livre s’affiche
Fait partie de la section Modèles et interface d’administration du Journey Django de Coddy. Leçon 5 sur 23.
Appuie sur « Jouer » et saisis Book.objects.all() dans l’onglet Shell : chaque livre affiche <Book: Book object (1)>, et tu ne peux pas les distinguer. Book.objects.all() demande tous les livres ; le chapitre suivant l’explique. Python transforme un objet en texte à l’aide de sa méthode __str__, et celle que chaque modèle obtient par défaut n’affiche que l’identifiant. Un modèle peut définir la sienne. Le modèle Movie d’un site de films pourrait afficher son titre et son année :
class Movie(models.Model):
...
def __str__(self):
return f"{self.title} ({self.released.year})"Le shell affiche alors <Movie: Alien (1979)>, tout comme l’interface d’administration et n’importe quel modèle qui affiche {{ movie }}. __str__ doit renvoyer le texte. Une méthode qui l’affiche renvoie None, et str() échoue alors avec une TypeError.
Défi
FacileDans books/models.py, faites en sorte qu’un livre s’affiche avec son titre, by et son auteur : Dune by Frank Herbert.
Cliquez sur « Jouer » et saisissez Book.objects.all() dans l’onglet Shell : chaque livre s’affiche maintenant ainsi : <Book: Dune by Frank Herbert>.
Essayez vous-même
from django.db import models
class Book(models.Model):
class Genre(models.TextChoices):
FICTION = "fiction", "Fiction"
SCIFI = "scifi", "Science fiction"
MYSTERY = "mystery", "Mystery"
HISTORY = "history", "History"
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
year = models.IntegerField()
price = models.DecimalField(max_digits=6, decimal_places=2)
is_read = models.BooleanField(default=False)
finished = models.DateField(null=True, blank=True)
summary = models.TextField(blank=True)
genre = models.CharField(max_length=20, choices=Genre, default=Genre.FICTION)
Toutes les leçons de Modèles et interface d’administration
1Votre premier modèle
Votre premier modèleTypes de champs3Des pages issues de la base de données
Une liste issue de la base de donnéesUne page pour chaque livreEntraînez-vous par vous-même : Playground Django