Menu
CoddyTech

Auswahlmöglichkeiten

Teil des Abschnitts Modelle und Admin-Bereich der Django-Journey von Coddy. Lektion 4 von 23.

Ein Genre sollte einen von wenigen Werten haben, nicht irgendeinen Text. Die Option choices beschränkt ein Feld auf eine Liste, die als Aufzählungsklasse angegeben wird. Eine Filmwebsite könnte einschränken, für wen ein Film gedacht ist:

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)

Jedes Element hat den in der Datenbank gespeicherten Wert "teen" und die für Menschen lesbare Bezeichnung "13 and over". Im Code schreibst du Movie.Age.TEEN, sodass ein Tippfehler einen Fehler verursacht, statt einen neuen Wert zu erzeugen. Die Klasse steht vor dem Feld, das sie verwendet.

Formulare und die Admin-Oberfläche zeigen die Bezeichnungen in einem Dropdown-Menü an und lehnen andere Werte ab; die Datenbank selbst prüft das nicht. movie.get_age_display() gibt die Bezeichnung eines Datensatzes zurück.

challenge icon

Aufgabe

Einfach

Gib Book ein Genre:

  • Innerhalb von Book eine Auswahlklasse Genre: FICTION ("fiction", "Fiction"), SCIFI ("scifi", "Science fiction"), MYSTERY ("mystery", "Mystery"), HISTORY ("history", "History").
  • Ein Feld genre mit bis zu 20 Zeichen, beschränkt auf diese Auswahlmöglichkeiten; standardmäßig fiction, sofern du keine andere auswählst.

Probiere im Shell-Tab Book.Genre.SCIFI.label aus.

Probier es selbst

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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Modelle und Admin-Bereich

Übe selbstständig: Django-Playground