Menu
CoddyTech

Opcje do wyboru

Część sekcji Modele i panel administracyjny ścieżki Django w Coddy. Lekcja 4 z 23.

Gatunek powinien przyjmować jedną z kilku wartości, a nie dowolny tekst. Opcja choices ogranicza pole do listy podanej jako klasa wyliczeniowa. Serwis filmowy może ograniczyć wybór grupy wiekowej, dla której przeznaczony jest film:

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)

Każdy element ma wartość zapisywaną w bazie danych, "teen", oraz etykietę widoczną dla użytkowników, "13 and over". W kodzie zapisujesz Movie.Age.TEEN, więc literówka powoduje błąd, zamiast tworzyć nową wartość. Klasa musi być zdefiniowana przed polem, które z niej korzysta.

Formularze i panel administracyjny wyświetlają etykiety na liście rozwijanej i odrzucają inne wartości; sama baza danych ich nie sprawdza. movie.get_age_display() zwraca etykietę danego wiersza.

challenge icon

Wyzwanie

Łatwy

Przypisz Book gatunek:

  • Wewnątrz Book utwórz klasę wyborów Genre: FICTION ("fiction", "Fiction"), SCIFI ("scifi", "Science fiction"), MYSTERY ("mystery", "Mystery"), HISTORY ("history", "History").
  • Pole genre o długości do 20 znaków, ograniczone do tych opcji; domyślnie fiction, chyba że wybierzesz inną opcję.

Na karcie Shell wypróbuj Book.Genre.SCIFI.label.

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Modele i panel administracyjny

Poćwicz samodzielnie: Edytor online Django