Django Model Field

·2022년 6월 21일
0
post-thumbnail

주로 사용하는 Model Field

string type

  • CharField
    • string의 최대 길이 값을 알 수 있을 때 사용
    • indexing이 필요한 경우
    • 성별, 나이 등 선택이 제한되어 있는 경우 Choices를 이용하는 것이 좋다
    • max_length를 지정해야한다
  • TextField
    • string의 최대 길이 값을 예측할 수 없을 때 (게시물 내용 등)
  • 유의 사항
    • null=True인 경우 DB단에 None과 빈 문자열이 모두 허용된다.

integer type

  • IntegerField
    • 정수 값의 저장
  • PositiveIntegerField
    • 정수를 저장하지만, DB단에서 자연수와 0만을 허용하고 싶을 때

float type

  • FloatField
    • 실수값 저장

date(time) type

  • DateField
    • python의 datetime.date형태를 저장
  • DateTimeField
    • datetime.datetime 형태를 저장

primary key type

  • AutoField
    • 자동으로 1씩 증가하는 정수값을 생성하고 저장
  • UUIDField
    • uuid값을 저장하기 위함
    • option으로 uuid생성 함수를 callback 함수로 포함

slug, url, ...

  • SlugField
    • CharField이지만 slug 형태에 대한 validation이 적용됨
  • URLField
    • CharField이지만 email 형태에 대한 validation이 적용됨
  • ForeignKey
    • Model의 여러 instance가 다른 Model의 한 instance를 참조하는 N:1관계에서 N에 해당하는 모델이 사용
  • OneToOne
    • A Model의 instance와 B Model의 instance가 1 대 1로 대응되어야 할 때
    • e.g. User 모델과 Profile모델은 1 대 1 대응 관계인 경우가 많다
  • ManyToMany
    • 다대다 관계일 때 사용
    • e.g. 학생과 수강하고 있는 강의 사이의 관계
  • on_delete옵션으로 참조하는 모델이 삭제되는 경우 모델의 삭제, 수정, null 처리 등을 결정할 수 있다.

주로 사용하는 Model Field Option

null

  • DB 필드자체에 Null값이 허용되는지 여부

blank

  • form, drf 등에서 Null값에 대한 validation이 적용되는지 여부

unique

  • DB 칼럼에 대해 유일성을 보장
  • 두개 이상의 칼럼 조합에 대한 유일성은 Meta의 option 이용

default

  • 값이 입력되지 않았을 때 사용할 기본값
  • e.g. 기본 프로필 이미지

verbose_name

  • field에 사용될 label값

auto_now_add

  • Date(Time)Field에서 레코드 생성시 현재 시간으로 자동 저장
  • related field에서 역참조하고자 하는 모델에서 바라보는 이름
profile
Ben

0개의 댓글