모델 필드를 정의할 때 null=True와 blank=True를 설정하는 옵션을 선택할 수 있다. 기본값은 두 값 다 False로 되어 있다. 언제 이 옵션들은 쓸지 흔히 혼동하게 된다. 모델 필드 인자들에 대한 일반적인 가이드를 여기 한자리에 모아 봤다.
필드 타입 | null=True로 설정하기 | blank=True로 설정하기 |
CharField, TextField, SlugField, EmailField, CommaSepraterdIntegerField, UUIDField | 이용하지 않는다 | 이용한다. 위젯이 빈 값을 허용하기를 원한다면 설정한다. 이렇게 설정하면 데이터베이스에 빈 값이 빈 문자열로 저장된다. |
FileField, ImageField | 이용하지 않는다 | 이용한다. CharField에 적용된 것과 같은 규칙이 적용 된다. |
BooleanField | 이용하지 않는다. 대신 NullBooleanField를 이용한다. | 이용하지 않는다. |
IntegerField, FloatField, DecimalField, Durationfield등 | 해당 값이 데이터베이스에 Null로 들어가도 문제가 없다면 이용한다. | 위젯에서 해당 값이 빈 값을 받아와도 문제가 없다면 이용한다. 그럴경우 null=True와 같이 이용한다. |
DateTimeField, DateField, TimeField | 해당 값이 데이터베이스에 Null로 들어가도 문제가 없다면 이용한다. | 위젯에서 해당 값이 빈 값을 받아와도 문제가 없다면 이용한다. 그럴경우 null=True와 같이 이용한다. |
ForeignKey, ManyToManyField, OneToOneField | 해당 값이 데이터베이스에 Null로 들어가도 문제가 없다면 이용한다. | 위젯에서 해당 값이 빈 값을 받아와도 문제가 없다면 이용한다. . |
GenericIPAddressField | 해당 값이 데이터베이스에 Null로 들어가도 문제가 없다면 이용한다. | 위젯에서 해당 값이 빈 값을 받아와도 문제가 없다면 이용한다. |