blank=True와 null=True는
Django 모델 필드를 정의할 때 사용되는 두 가지 옵션으로,
이들은 서로 다른 목적을 가지고 있음
null=True
목적: 데이터베이스 수준에서 NULL 값을 허용할지 여부를 결정
적용 대상: 데이터베이스 필드
필드 유형: 일반적으로 문자열 필드를 제외한 대부분의 필드 유형에서 사용됨
blank=True
목적: 폼 검증에서 필드가 빈 값(empty value)을 가질 수 있는지 여부를 결정
적용 대상: 폼 및 모델 검증
필드 유형: 모든 필드 유형에서 사용됨
주요 차이점
데이터베이스 vs. 폼 검증:
null=True는 데이터베이스에서 해당 필드가 NULL 값을 가질 수 있게 함
즉, 이 필드에 아무런 값을 저장하지 않아도 된다는 의미
blank=True는 폼 검증 시 해당 필드가 빈 값(empty value)으로 제출될 수 있다는 의미
이 옵션이 설정되어 있으면,
폼에서 값을 입력하지 않아도 검증 오류가 발생하지 않음
추가적인 궁금증
blank=True인 필드가
폼을 통해 빈 값으로 제출되었을 때
데이터베이스에 저장되는 값은
필드의 유형과 null=True 옵션의 설정 여부에 따라 다름
blank=True만 설정된 경우:
폼에서 빈 값으로 제출되면 데이터베이스에는 빈 문자열('')로 저장됨
blank=True와 null=True 모두 설정된 경우:
폼에서 빈 값으로 제출되면 데이터베이스에는 NULL 값으로 저장됨