작성자 | 이재영 |
일 시 | 2024. 4. 4 (목) 18:00 ~ 21:00 |
장 소 | 복지관b128-1호, 대운동장 (오늘은 날씨가 좋아서 b128-1호에서 하다가 운동장으로 이동했습니다) |
참가자 명단 | 임혜진, 이재영, 성창민, 김명원, 장원준 |
사 진 | ![]() |
더보기
목차
- 필드유형
- 필드옵션
- 관계필드
필드란 데이터베이스의 테이블에서 열(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는 다양하고 강력한 기능들이 많다는 것을 느꼈다.