Menu
CoddyTech

기본값과 빈 필드

Coddy Django 여정의 모델과 관리자 섹션에 포함된 레슨. 23개 중 3번째.

읽었는지 여부를 말하지 않고 책을 저장하면 데이터베이스가 거부합니다: NOT NULL constraint failed. 그렇지 않다고 지정하기 전까지 모든 필드는 필수이며, 다음 세 가지 옵션이 있습니다:

has_subtitles = models.BooleanField(default=True)
rating = models.DecimalField(max_digits=3, decimal_places=1, null=True, blank=True)
tagline = models.CharField(max_length=200, blank=True)

default는 값을 지정하지 않았을 때 새 행에 들어가는 값입니다. null=True를 사용하면 열에 NULL을 저장할 수 있고, Python에서는 이를 None으로 읽습니다. blank=True를 사용하면 양식과 관리자 페이지에서 해당 필드를 비워 둘 수 있습니다.

알 수 없을 수도 있는 숫자나 날짜에는 null=True와 blank=True가 모두 필요합니다. 텍스트에는 blank=True만 필요합니다. 빈 텍스트는 ""로 저장되며, null을 사용하면 빈 값이 두 종류가 됩니다. TextField는 길이 제한이 없는 텍스트로, 서평처럼 긴 내용을 위한 필드입니다.

challenge icon

챌린지

쉬움

Book의 선택 사항인 부분을 선택 사항으로 만들어 보세요:

  • is_read는 False로 시작합니다.
  • finished는 비어 있을 수 있습니다. 아직 다 읽지 않은 책에는 날짜가 없습니다.
  • 길이 제한이 없는 긴 텍스트를 위한 summary 필드를 추가하세요. 비워 두면 NULL이 아니라 빈 텍스트로 저장됩니다.

‘플레이’를 누른 다음 Shell 탭에서 Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50")를 입력하세요. 오류가 아니라 <Book: Book object (1)>가 출력됩니다.

직접 해보기

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()
    finished = models.DateField()

모델과 관리자의 모든 레슨

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