선택 항목
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를 추가하세요.
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)
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
모델과 관리자의 모든 레슨
직접 연습해 보세요: Django 플레이그라운드