YUYANE

Django / Model Field 본문

Framework/DJANGO

Django / Model Field

YUYA 2021. 2. 23. 10:38

학습 강의

nomadcoders.co/airbnb-clone/lobby

 

 

지난 포스팅(1y9u9j2in.tistory.com/178)에서 장고의 모델은 데이터를 담당한다고 배웠다. 오늘은 모델에서 사용되는 필드 타입에 대해 배워보자.

 

 

Model Field?

 

 

데이터에는 여러 가지 타입이 있다. 예를 들어 회원가입을 할 때 입력해야 하는 것들을 생각해보자. 이름은 텍스트, 나이는 숫자, 국가는 선택, 결혼 여부 등 평소에는 별 생각 없이 입력했던 정보였지만, 따지고 보면 서로 다른 타입들을 가지고 있다. 

 

따라서 데이터를 다루는 장고 모델에서도 여러가지 타입의 데이터를 처리할 수 있도록 Model Field라는 것이 존재하는데, 데이터 베이스 테이블 중에서 열을 나타낸다.

 

 

 

Model Field Import

 

필드는 'django.db.models.fields'에 정의된 모델이지만 편의상 'django.db.models'에 import 되어 있다. 코드 시작에 앞서 아래와 같이 import 하자.

 

from django.db import models

 

지금부터는 많이 쓰이는 몇 가지 Field Types을 알아보자. 장고 문서에서 더 많은 타입들을 확인할 수 있다.

 

 

CharField

 

    name = models.CharField(max_length=140)

 

비교적 짧은 문자열을 입력할 수 있다. 뒤에 나오는 TextField가 여러 라인의 텍스트를 입력 받는 반면에 CharField는 단일 라인만 입력 받으며, 데이터 베이스 레벨에서 최대 길이가 정해져야 하기 때문에, max_length를 필수로 설정해주어야 한다.

 

- option : Choices

 

 

위와 같이 여러가지 선택란을 필드에 넣고 싶을 때 choices 옵션을 사용하면 된다.

 

  FRESHMAN = 'FR'
    SOPHOMORE = 'SO'
    JUNIOR = 'JR'
    SENIOR = 'SR'
    GRADUATE = 'GR'
    YEAR_IN_SCHOOL_CHOICES = [
        (FRESHMAN, 'Freshman'),
        (SOPHOMORE, 'Sophomore'),
        (JUNIOR, 'Junior'),
        (SENIOR, 'Senior'),
        (GRADUATE, 'Graduate'),
    ]
    year_in_school = models.CharField(
        max_length=2,
        choices=YEAR_IN_SCHOOL_CHOICES,
        default=FRESHMAN,
    )

 

CharField 선언 이전에 선택 항목에 들어갈 요소들을 리스트(YEAR_IN_SCHOOL_CHOICES)로 작성한 후에, choices에 넣어주면 된다.

 

 

TextField

 

 description = models.TextField()

 

앞의 CharField와는 대조적으로 문자열을 큰 폭으로 입력받을 수 있다. CharField 처럼 max_length를 설정할 수는 있지만 필수 사항은 아니다.

 

CharField(Name)과 TextField(Description)

 

 

IntegerField

 

value = models.TimeField()

IntegerField

-2147483648 부터 2147483647까지의 정수 값을 입력받는다. MinValueValidatr와 MaxValueValidator를 통해 최소/최대 값을 설정할 수 있다.

 

 

BooleanField

 

   superhost = models.BooleanField(default=False)

Boolean(True/False) 값을 입력받는 필드. 위와 같이 default 값을 미리 설정해줄 수 있다. default 값이 없다면 None이다.

 

 

 

참고

docs.djangoproject.com/en/3.1/ref/models/fields/#django.db.models.ForeignKey

'Framework > DJANGO' 카테고리의 다른 글

Django / ModelAdmin  (0) 2021.02.23
Django / ForeignKey 와 ManyToManyField  (0) 2021.02.23
Django / migrations을 하는 이유  (0) 2021.02.20
Django / models.py  (0) 2021.02.19
Django / pipenv로 가상환경 구축하기(Ubuntu, python3)  (0) 2021.02.15
Comments