Menu
CoddyTech

Варианты выбора

Часть раздела Модели и панель администратора путешествия по Django на Coddy. Урок 4 из 23.

Жанр должен быть одним из нескольких значений, а не произвольным текстом. Параметр choices ограничивает поле списком, заданным в виде класса перечисления. Сайт о фильмах может ограничить выбор того, для кого предназначен фильм:

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)

У каждого элемента есть значение, хранящееся в базе данных, "teen", и подпись, которую видят люди, "13 and over". В коде ты пишешь Movie.Age.TEEN, поэтому опечатка будет ошибкой, а не новым значением. Класс указывается перед полем, которое его использует.

Формы и панель администратора показывают подписи в раскрывающемся списке и отклоняют другие значения; сама база данных проверку не выполняет. movie.get_age_display() возвращает подпись для строки.

challenge icon

Задание

Легко

Добавь жанр для Book. Напиши класс выбора Genre в начале Book, перед полями:

  • FICTION: "fiction", "Fiction"
  • SCIFI: "scifi", "Science fiction"
  • MYSTERY: "mystery", "Mystery"
  • HISTORY: "history", "History"

Затем добавь поле genre длиной до 20 символов, ограниченное этими вариантами; по умолчанию — fiction, если не выберешь другой.

На вкладке Shell введи Book.Genre.SCIFI.label: будет выведено 'Science fiction'.

Попробуйте сами

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 iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Модели и панель администратора

Потренируйтесь самостоятельно: Песочница Django