null
: 필드의 값이 NULL(정보 없음)로 저장되는 것을 허용합니다. 결국 데이터베이스에 관한 설정입니다.blank
: 필드가 폼(입력 양식)에서 빈 채로(empty) 저장되는 것을 허용합니다.
django에서 필드를 필수필드로 만들지 않기 위해 null=True, blank=True로 두는 방법을 많이 사용합니다. 대부분의 경우에는 문제가 되지 않지만 문자열 기반 필드인 CharField
와 TextField
에는 이 방법을 피하는 것이 좋습니다.
django에서도 null이 아닌 빈 문자열로 표현하는 것을 권유하고 있습니다.
class Person(models.Model):
name = models.CharField(max_length=255) # 필수
bio = models.TextField(max_length=500, blank=True) # 선택 (null=True를 넣지 말자)
birth_date = models.DateField(null=True, blank=True) # 선택 (여기서는 null=True를 넣을 수 있다.)
이렇게 설정하면 DB에서는 빈 값이 빈 문자열(‘’)로 설정되어 null과 빈 값을 빈 문자열으로만 판단할 수 있게 됩니다.