선택 항목
Coddy Django 여정의 모델과 관리자 섹션에 포함된 레슨. 23개 중 4번째.
장르는 아무 텍스트나 가능한 것이 아니라 몇 가지 값 중 하나여야 합니다. 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()는 해당 행의 라벨을 반환합니다.
챌린지
쉬움Book에 장르를 지정하세요:
Book안에 선택 항목 클래스Genre를 만드세요:FICTION("fiction","Fiction"),SCIFI("scifi","Science fiction"),MYSTERY("mystery","Mystery"),HISTORY("history","History").- 최대 20자이며 해당 선택 항목으로 제한되고, 다른 항목을 선택하지 않으면 fiction으로 설정되는
genre필드를 만드세요.
셸 탭에서 Book.Genre.SCIFI.label을 시도해 보세요.
직접 해보기
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)
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
모델과 관리자의 모든 레슨
직접 연습해 보세요: Django 플레이그라운드