[Django]CharField와 TextField에서의 null=True

jiyoung·2023년 1월 3일
0
post-thumbnail

null과 blank

  • null : 필드의 값이 NULL(정보 없음)로 저장되는 것을 허용합니다. 결국 데이터베이스에 관한 설정입니다.
  • blank : 필드가 폼(입력 양식)에서 빈 채로(empty) 저장되는 것을 허용합니다.

CharField와 TextField에서의 null=True

django에서 필드를 필수필드로 만들지 않기 위해 null=True, blank=True로 두는 방법을 많이 사용합니다. 대부분의 경우에는 문제가 되지 않지만 문자열 기반 필드인 CharFieldTextField에는 이 방법을 피하는 것이 좋습니다.

왜냐하면 null=True, blank=True로 설정하게되면 “데이터 없음”에 대해 두 가지 값(null과 빈 문자열)을 가지게 되는데 “데이터 없음”에 대해 두 가지 값을 갖는 것은 중복입니다. 즉, 해당 필드의 데이터가 없는 상황을 두 가지(빈 문자열 또는 null)로 해석할 수 있기 때문에 null=True 사용을 지양해야합니다.


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과 빈 값을 빈 문자열으로만 판단할 수 있게 됩니다.


참고자료

0개의 댓글