Menu
CoddyTech

Choix

Fait partie de la section Modèles et interface d’administration du Journey Django de Coddy. Leçon 4 sur 23.

Un genre devrait correspondre à l’une de quelques valeurs, et non à n’importe quel texte. L’option choices limite un champ à une liste, définie sous forme de classe d’énumération. Un site de cinéma pourrait limiter le public auquel un film est destiné :

class Movie(models.Model):
    class Age(models.TextChoices):
        ALL = "all", "All ages"
        TEEN = "teen", "13 and over"
        ADULT = "adult", "18 and over"

    age = models.CharField(max_length=10, choices=Age, default=Age.ALL)

Chaque membre possède la valeur stockée dans la base de données, "teen", et le libellé affiché aux utilisateurs, "13 and over". Dans le code, tu écris Movie.Age.TEEN : une faute de frappe provoque donc une erreur au lieu de créer une nouvelle valeur. La classe est définie avant le champ qui l’utilise.

Les formulaires et l’interface d’administration affichent les libellés dans une liste déroulante et refusent les autres valeurs ; la base de données, elle, n’effectue aucune vérification. movie.get_age_display() renvoie le libellé d’une ligne.

challenge icon

Défi

Facile

Attribue un genre à Book :

  • À l’intérieur de Book, une classe de choix Genre : FICTION ("fiction", "Fiction"), SCIFI ("scifi", "Science fiction"), MYSTERY ("mystery", "Mystery"), HISTORY ("history", "History").
  • Un champ genre, limité à 20 caractères, avec uniquement ces choix ; sa valeur par défaut est la fiction, sauf si tu en choisis une autre.

Dans l’onglet Shell, essaie Book.Genre.SCIFI.label.

Essayez vous-même

from django.db import models


class Book(models.Model):
    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)
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Modèles et interface d’administration

Entraînez-vous par vous-même : Playground Django