[Django] Model 필드 타입

원준·2023년 10월 19일

Django

목록 보기
2/4

Model 필드 타입 종류

CharField

  • 제한 문자열 삽입
  • 필수로 최대 길이를 옵션 지정해야한다. max_length
    title = models.CharField(max_length=100, **option)

EmailField

  • 이메일 주소 형태를 넣을 때 사용된다.
  • 이메일 형식에 맞지 않으면 경고문이 발생한다.
    email = EmailField(max_length=254, **option)

URLField

  • URL 주소 형태를 넣을 때 사용된다.
    url = URLField(max_length=200, **option)

TextField

  • 텍스트 필드는 문자열과 비슷하게 보이지만, 대용량 문자열을 처리하는 필드.
  • 캐릭터 필드보다는 DB 용량을 많이 잡아 먹겠지만, 크기 제한을 굳이 할 필요는 없다.
    post = models.TextField(**options)

IntegerField

  • 32비트의 정수형 필드
  • 사용 방법은 완전히 똑같지만 정수 사이즈에 따라 BigIntegerField, SmallIntegerField 사용가능하다!
  • default는 맨 처음 수정없이 저장될 경우의 값
    count = models.IntegerField(default=0, **options)

BooleanField

  • True 혹은 False만 저장하는 필드
  • Null을 허용하기 위해서는 NullBooleanField를 사용해야 한다.
  • initial 옵션은 맨 처음 수정없이 저장될 경우의 값을 뜻한다.
    bool = models.BooleanField(initial=True, **options)

DatetimeField

  • 시간과 관련된 값을 저장하는 필드
  • DateField : 날짜만 저장하고 싶은 경우 사용한다.
  • TimeField : 시간만 저장하고 싶은 경우 사용한다.
    time = models.DateTimeField(auto_now=False, **options)
  • 자동으로 현재 시간대를 넣고 싶다면 auto_now = True로 옵션을 변경하면 된다!!
  • auto_now
    • save 될때 마다 현재 시간 갱신한다.
  • auto_now_add
    • 맨 처음 생성한 날짜만 갱신한다.

DecimalField

  • 데시멀 필드는 소수점 관련 필드를 말한다.
  • max_digits(숫자의 수)decimal_places(소수점의 갯수) 옵션을 필수로 지정해야 한다.
    decimal = models.DecimalField(max_digits=None, decimal_places=None, **options)
    # max =5, decimal = 2의 값일 경우, 123.45 의 값이 나온다!

FileField

  • 파일을 업로드 하는 필드
  • upload_to 옵션에 반드시 경로를 지정해야한다.
  • 폴더의 탐색은 사전에 settings.py에서 설정되어 있는 MEDIA_ROOT 경로부터 우선 탐색을 시작한다.
    upload = models.FileField(upload='uploads/', **options)

ImageField

  • 파일 필드의 파생 클래스
  • 해당 파일이 이미지인지 체크해준다.
    img = models.ImageField(upload_to='images/', **options)

Model 필드 공통 옵션

null

  • null=True 이면, Empty 값을 DB에 NULL로 저장한다.
  • Null 허용
    models.IntegerField(null=True)

blank

  • False일 경우 Required 필드가 되며, True일 경우 Optional 필드가 된다.
  • 공백 허용 여부
    models.DateTimeField(blank=True)

primary_key

  • 해당 필드가 Primary Key로 표시한다.
    models.CharField(max_length=10, primary_key=True)

unique

  • 해당 필드가 테이블에서 Unique함을 표시한다.
    models.IntegerField(unique=True)

default

  • 필드의 기본값을 지정한다.
    models.CharField(max_length=2, default="WA")

db_column

  • 컬럼명은 기본값으로 필드명으로 지정되지만, 만약 다르게 쓸경우 지정한다.
profile
공부해보자

0개의 댓글