Menu
CoddyTech

선택 항목

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()는 행의 레이블을 반환합니다.

challenge icon

챌린지

쉬움

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)
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

모델과 관리자의 모든 레슨

직접 연습해 보세요: Django 플레이그라운드