카테고리 없음

[Django 스터디 5주차] Django에 다양한 필드에 대해 알아보기

lee_jy_1204 2024. 4. 4. 21:16
작성자 이재영
일 시 2024. 4. 4  (목) 18:00 ~ 21:00
장 소 복지관b128-1호, 대운동장 (오늘은 날씨가 좋아서 b128-1호에서 하다가 운동장으로 이동했습니다)
참가자 명단 임혜진, 이재영, 성창민, 김명원, 장원준
 사 진

 

더보기

목차

  1. 필드유형
  2. 필드옵션
  3. 관계필드

필드란 데이터베이스의 테이블에서 열(column)을 의미하고, Django에서 모델을 만들 때 필수적으로 사용해야 한다. 저번 주차에 했던 ORM과도 관련이 있어서 이번 주차에는 필드에 대해서 알아보고자 한다.

 

앞으로 나올 개념과 정보들은 Django 공식 문서를 바탕으로 작성되었다.

https://docs.djangoproject.com/en/5.0/ref/models/fields/

필드유형

Django에서 제공해주는 필드는 정말 다양한다. 때문에 가장 많이 쓰이는 필드에 대해서만 알아볼 것이다.

AutoField

  • 사용 가능한 ID에 따라 자동으로 증가하는 IntegerField이다. 일반적으로 이것을 직접 사용할 필요는 없다. 따로 지정하지 않으면 기본 키 필드가 모델에 자동으로 추가된다.

BooleanField

  • 참과 거짓을 담는 필드이다. 이 필드는 기본 양식 위젯은 체크박스이고, 일반적으로 Bool이라고 하면 True 또는 False로 값을 가지지만 null 옵션이 True가 되면 null 값도 가질 수 있는 Null Boolean Select가 된다. 그리고 default 옵션이 따로 정의되지 않은 경우 기본 값은 None 이다.

CharField

  • 작은 크기부터 큰 크기까지의 문자열을 위한 문자열 필드이다. 이 필드의 기본 위젯은 TextInput이다. 그러나 많은 양의 문자열을 담을 경우에는 CharField보다 TextField를 사용할 것을 공식문서에서 권장한다.

DateTimeField, DateField, TimeField

  • Python에서 datetime.datetime(DateTimeField, DateField), datetime.time(TimeField) 인스턴스로 표현되는 날짜와 시간이다. DateTimeField는 날짜와 시간, DateField는 날짜, TimeField는 시간만 담는 필드이다.

EmailField

  • 기본적으로 CharField와 같지만, Email 유효성 검사를 사용하여 값이 유효한 이메일인지 확인해주는 기능이 추가되어 있다.

FloatField

  • Python에서 float 인스턴스로 표현되는 부동 소수점 숫자이다. 이 필드의 기본 양식 위젯은 localize 옵션이 False인 경우 NumberInput이고 True인 경우 TextInput이다.

IntegerField

  • 4byte 크기의 정수를 담을 수 있는 필드이다. MinValueValidator 와 MaxValueValidator를 사용하여 데이터베이스가 지원하는 값을 기반으로 입력의 유효성 검사를 진행한다. FloatField와 마찬가지로 기본 양식 위젯은 localize 옵션이 False인 경우 NumberInput이고 True인 경우 TextInput이다.

TextField

  • 크기가 큰 텍스트를 담을 수 있는 필드이다. 이 필드의 기본 양식 위젯은 Textarea이다.

ArrayField

  • 일반적으로 사용할 수 없고, PostgreSQL에서만 사용할 수 있는 필드이다. 데이터 목록을 저장하는 필드이다. 대부분의 필드 유형을 사용할 수 있으며 다른 필드 인스턴스를 base_field로 전달한다. 크기를 지정할 수도 있고, ArrayField를 중첩하여 다차원 배열을 저장할 수 있다.

필드옵션

필드에 사용할 수 있는 다양한 옵션들을 사용하여 기능을 구현할 수 있다. 이번에도 많이 사용되는 옵션들을 알아보겠다.

null

  • True이면 Django는 빈 값을 데이터베이스에 NULL로 저장한다. 기본값은 False이다.
문자열 기반 필드에서는 null을 사용하면 안된다. 문자열 필드에 null 옵션을 사용할 경우 "데이터 없음"에 대한 값이 null과 빈 문자열이 중복된다.

blank

  • True이면 필드를 비워둘 수 있다. 기본값은 False이다. null과 헷갈릴 수 있는데 null은 순전히 데이터베이스와 관련되어 있고, blank은 유효성 검사와 관련된다. 필드에 blank=True가 있으면 유효성 검사를 통해 빈 값을 입력할 수 있습니다.

오늘은 Django에서 사용되는 다양한 필드들과 몇몇개의 옵션을 알아보았다. 확실히 Django는 다양하고 강력한 기능들이 많다는 것을 느꼈다.