[Django] Field 분석 ②

kiteB·2021년 11월 9일
0

Django

목록 보기
3/5
post-thumbnail

오늘은 Field options에 대해 알아보자!
이번에도 내가 자주 사용할 것만 정리해보겠다.

1. null

Field.null

True로 설정하면 빈 값을 저장한다.

  • 기본값은 False이다.
  • CharField, TextField와 같은 문자열 기반 필드에서는 사용하지 말자.
    • 문자열 기반 필드에서 null=TrueNULL빈 문자열의 두 가지의 값이 있음을 의미한다.

2. blank

Field.blank

True로 설정하면 비어있는 값을 허용한다.

  • 기본값은 False이다.
  • null과는 다르다!

📌 null vs blank

  • null은 순전히 데이터베이스 측면에서 생각하는 것이며, blank는 유효성 검증 측면에서 생각하는 것이다.
  • null은 필드의 값이 NULL으로 저장되는 것을 허용하고, blank는 필드에 비어있는 채로 저장되는 것을 허용하는 것이다!

3. default

Field.default

필드의 기본값을 지정한다.

  • 기본값은 특정 값일 수도, 호출 가능한 객체일 수도 있다.
    • 호출 가능한 객체인 경우, 새로운 객체가 만들어질 때마다 호출된다.
  • 기본값은 변경 가능한 객체(모델 인스턴스, list, set, 등)는 될 수 없다.
    → 해당 객체의 동일한 인스턴스에 대한 참조가 모든 새 모델 인스턴스에서 기본값으로 사용되기 때문이다.

4. primary_key

Field.primary_key

True로 설정하면 해당 필드는 모델의 기본 키이다.

  • 모델의 어떤 필드도 primary_key=True라고 명시하지 않으면 Django가 자동으로 primary key를 추가한다.
    → 따로 설정해줄 필요는 없다!
  • primary_key=Truenull=False, unique=True를 암시한다.
  • 객체에는 하나의 primary key만 허용된다.
  • primary key는 읽기 전용이다.

5. unique

Field.unique

True로 설정하면 해당 필드는 반드시 테이블 전체에서 고유한 값이어야 한다.

  • 만약 unique 필드에 중복되는 값이 있는 모델을 저장하려고 하면, 모델의 save() 메서드에 의해 django.db.IntegrityError가 발생한다.
  • 이 옵션은 ManyToManyField, OneToOneField를 제외한 모든 필드 타입에서 유효하다.
profile
🚧 https://coji.tistory.com/ 🏠

0개의 댓글