Hai thứ ở hai tầng khác nhau, độc lập với nhau:
null=True: tầng database — cho phép cột chứaNULL.blank=True: tầng validation (form/admin) — cho phép để trống khi nhập.
Quy ước của Django:
- Field text/char: nên blank=True mà không null=True. Django khuyến nghị "rỗng" là chuỗi '', tránh có hai kiểu rỗng (NULL và '').
- Field số / ngày / ForeignKey muốn cho phép bỏ trống: cần cả hai null=True, blank=True (vì không có "chuỗi rỗng" để lưu).
python
bio = models.TextField(blank=True) # '' khi trống
age = models.IntegerField(null=True, blank=True) # NULL khi trống