Menu
CoddyTech

Giá trị mặc định và trường trống

Thuộc phần Model và trang quản trị trong hành trình Django của Coddy. Bài học 3 trên 23.

Lưu một cuốn sách mà không cho biết bạn đã đọc nó hay chưa, cơ sở dữ liệu sẽ từ chối: NOT NULL constraint failed. Mọi trường đều là bắt buộc cho đến khi bạn chỉ định khác đi, với một trong ba tùy chọn:

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 là giá trị mà một hàng mới nhận được khi bạn không cung cấp giá trị nào. null=True cho phép cột lưu NULL, mà Python đọc thành None. blank=True cho phép biểu mẫu và trang quản trị chấp nhận trường để trống.

Một số hoặc ngày tháng mà bạn có thể chưa biết cần cả null=True và blank=True. Văn bản chỉ cần blank=True: văn bản trống được lưu thành "", còn null sẽ khiến nó có hai dạng trống. TextField là văn bản không giới hạn độ dài, phù hợp với nội dung dài như bài đánh giá.

challenge icon

Thử thách

Dễ

Đặt các phần không bắt buộc của Book thành tùy chọn:

  • is_read bắt đầu với giá trị False.
  • finished có thể để trống: sách chưa đọc xong thì không có ngày.
  • Thêm trường summary dành cho văn bản dài, không giới hạn độ dài; trường này có thể để trống, được lưu dưới dạng văn bản rỗng, không phải NULL.

Nhấn Run, sau đó trong thẻ Shell nhập Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50"): lệnh này in ra <Book: Book object (1)>, không phải lỗi.

Tự làm thử

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()

Tất cả bài học trong Model và trang quản trị

Tự luyện tập: Playground Django