Sự khác biệt giữa `null=True` và `blank=True` trong Django là gì?
By khoanc, at: 16:01 Ngày 09 tháng 7 năm 2025
Thời gian đọc ước tính: __READING_TIME__ minutes


Trường hợp sử dụng
-
null=True
:Sử dụng khi bạn muốn Django lưu NULL vào cơ sở dữ liệu cho các giá trị trống. Điều này thường được sử dụng cho các trường không phải chuỗi như DateTimeField, ForeignKey, v.v.
-
blank=True
:Sử dụng để cho phép đầu vào trống trong các form của Django. Nó cần thiết cho các giao diện hướng đến người dùng, nơi trường dữ liệu là tùy chọn.
-
Cùng nhau
:Bạn thường sử dụng cả hai khi một trường thực sự là tùy chọn:
note = models.CharField(max_length=100, null=True, blank=True)
Ghi chú quan trọng
-
Đối với các trường dựa trên chuỗi (CharField, TextField), Django khuyến nghị:
-
Chỉ sử dụng
blank=True
. -
Tránh
null=True
, bởi vì Django lưu trữ các chuỗi trống ("") thay vì NULL. -
Điều này tránh việc có hai giá trị “trống”: NULL và "", điều này có thể dẫn đến sự nhầm lẫn.
-
Ví dụ nhanh
class Profile(models.Model):
bio = models.TextField(null=True, blank=True) #
Người dùng có thể để trống trong form, và nó sẽ lưu NULL vào DB. age = models.IntegerField(null=True, blank=True) #
Có thể bỏ qua trong form và cũng có thể là NULL trong DB.
Tham khảo