[ Django ] Django Model Field

2021. 11. 16. 00:50·Archive/Develop
728x90
반응형

 

장고 내에서 기본으로 지원되는 모델 필드를 알아보자.

 

 

Primary Key : AutoField, BigAutoField

 

문자열 : CharField, TextField, SlugField

 

날짜/시간: DateField, TimeField, DateTimeField, DurationField

 

참/거짓 : BooleanField, NullBooleanField 

 

숫자 : IntegerField, SmallIntegerField, PositiveIntegerField, PositiveSmallIntegerField, BigIntegerField, DecimalField, FloatField

 

파일 : BinaryField, FileField, ImageField, FilePathField

 

이메일 : EmailField

 

URL : URLField

 

UUID : UUIDField

 

IP : GenericIPAddressField

 

Relationship Types : ForeignKey, ManyToManyField, OneToOneField

 

이밖에도 다양한 커스텀 필드들이 존재한다.

 

 

모델 필드들은 DB 필드 타입을 반영한다.

 

예를들어 Varchar 필드 타입은 CharField, SlugField, URLField 등으로 매핑된다.

 

 

파이썬 데이터타입과 데이터베이스 데이터타입도 매핑 된다.

 

 

 

 

자주 쓰이는 필드 공통 옵션

 

blank : 장고 단에서 validation 시 empty 허용 여부 (디폴트 : False)

null : null 허용 여부 (디폴트 : False)

db_index : 인덱스 필드 여부 (디폴트 : False)

default : 디폴트 값 지정, 혹은 값을 리턴해줄 함수

unique : 유일성 (디폴트 : False)

choices : select 박스 소스

validators : validators 를 수행할 함수 다수 지정

verbose_name : 필드레이블, 미지정시 필드명이 사용

help_text : 필드 입력 도움말

 

 

만약 blank 가 디폴트 상태인 False 라면,

장고 form 을 이용한 유효성 검사에서 아무 값도 없는 필드는 걸리게 된다.

 

근데 model 에서 blank 옵션이 False 로 되어 있다하더라도,

장고 form 을 쓰지 않으면 유효성 검사를 하지 않는다. -> 이거 유의!

 

 

권장 사항

 

설계한 데이터베이스 구조에 따라, 최대한 필드 타입을 타이트하게 지정해주는 것이 입력값 오류를 막을 수 있다!

(모델 설계가 장고 개발의 절반이라고 해도 될정도,,)

 

 

 

프론트엔드에서 유효성검사는 사용자 편의를 위해서 수행하며,

백엔드에서의 유효성 검사는 필수이다.

 

직접 유효성 로직을 만들지말고, 이미 잘 구성된 장고의 Form/Model을 가져다 쓰는게 안전하다!

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ Oracle ] count(*) VS count(특정컬럼명)  (0) 2021.11.16
[ Django ] DateTimeField | auto_now_add VS auto_now  (0) 2021.11.16
[ Django ] Django DB 에 관하여  (0) 2021.11.16
[ Django ] 블로그 기능 만들기 | blog app 만들기(기본 CRUD)  (0) 2021.11.16
개발 방법론 | SPA(Single Page Application)  (0) 2021.11.15
'Archive/Develop' 카테고리의 다른 글
  • [ Oracle ] count(*) VS count(특정컬럼명)
  • [ Django ] DateTimeField | auto_now_add VS auto_now
  • [ Django ] Django DB 에 관하여
  • [ Django ] 블로그 기능 만들기 | blog app 만들기(기본 CRUD)
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    자바스크립트 객체
    파이썬
    보안뉴스
    Python
    Oracle
    자바스크립트
    Git
    oracle db
    코드업 기초
    javascript
    docker
    백준 풀이
    비박스
    파이썬 알고리즘
    파이썬 기초
    자바스크립트 API
    백준 파이썬
    파이썬 백준
    코드업
    파이썬 문제
    Codeup
    오라클
    백준
    백준 문제풀이
    코드업 파이썬 기초 100제
    Django
    C++
    카카오 100일 프로젝트
    장고
    파이썬 기초 문제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ Django ] Django Model Field
상단으로

티스토리툴바