반응형
Django 모델이란?
Django에서 모델은 데이터베이스 테이블의 구조를 정의하는 클래스이다. 각 모델 클래스는 데이터베이스 테이블을 나타내며, 클래스의 각 속성은 테이블의 열을 나타낸다. Django의 이러한 모델 클래스를 기반으로 데이터베이스 테이블을 생성하고 데이터를 삽입, 수정, 삭제하는 등의 작업을 수행한다.
자동 증가 필드
분류 | 모델 필드 타입 | 설명 |
자동 증가 필드 (기본키 전용) |
AutoField | 4바이트 정수 필드 |
BigAutoField | 8바이트 정수 필드 - 장고 디폴트 기본키 타입 | |
SmallAutoField | 2바이트 정수 필드 |
숫자 필드
분류 | 모델 필드 타입 | 설명 |
숫자 필드 | IntegerField | 4바이트 정수 필드 |
BigIntegerField | 8바이트 정수 필드 | |
SmallIntegerField | 2바이트 정수 필드 | |
PositiveIntegerField | 4바이트 정수 필드 (unsigned) | |
PositiveBigIntegerField | 4바이트 정수 필드 (unsigned) | |
PositiveSmallIntegerField | 4바이트 정수 필드 (unsigned) | |
FloatField | 부동 소수점 수 필드, 숫자를 2진수로 표현하기에 오차 발생 가능성 | |
DecimalField | 고정 소수점 수 필드, 정확한 소수점 연산이 가능하지만 FloatField에 비해 느린 연산 (범위: -99,999,999.99 ~ 99,999,999.99) |
문자열 필드
분류 | 모델 필드 타입 | 설명 |
문자열 필드 |
CharField(max_length=255)
|
길이 제한이 있는 문자열 필드, 최대 길이 지정 필요 |
TextField | 길이 제한이 없는 문자열 필드 | |
SlugField | slug 유효성 검사가 추가된 문자열 필드, 디폴트 최대 길이 50, allow_unicode=Ture 옵션을 통해 유티코드 slug 지원 | |
EmailField | email 유효성 검사가n 추가된 문자열 필드, 디폴트 최대 길이 254 | |
URLField | URL 유효성 검사가 추가된 문자열 필드, 디폴트 최대 길이 20- |
문자열 필드의 null=True 지정은 NULL과 빈 문자열 2가지 유형이 저장될 수 있다. 값이 없는 레코드를 조회할 때, NULL과 빈 문자열을 모두 체크해야하는 번거러움이 발생할 수 있다. -> blank=True 옵션을 적용하여 빈 문자열로만 체크하기를 추천한다.
파일 필드
분류 | 모델 필드 타입 | 설명 |
파일 필드 | FileField | 파일 시스템에 파일을 저장하고, 저장한 파일의 상대 경로를 지정하는 필드, 디폴트 최대 길이 100 |
ImageField | 파일 시스템에 이미지를 저장하고 그 상대경로를 저장하는 필드, 디폴트 최대 길이 100 | |
FilePathField | 파일 시스템의 절대 경로를 저장하는 필드, 디폴트 최대 길이 100 path 인자를 지정하면 해당 경로 내의 파일/폴더 목록을 select 박스로 제공, match 인자를 통해 목록을 필터링 |
|
BinaryField | 데이터베이스 필드에 바이너리 데이터를 저장하는 필드 |
날짜/시간
분류 | 모델 필드 타입 | 설명 |
날짜/시간 필드 | DateField | 날짜 필드 auto_now_add=True 옵션이 지정되면, 최초 save 호출 시점에 현재 날짜가 자동 지정 auto_now=True 옵션이 지정되면, 매 save마다 현재 날짜가 자동 지정 |
DateTimeField | 날짜/시간 필드 (timezone 지원) auto_now_add=True 옵션이 지정되면, 최초 save 호출 시점에 현재 일시가 자동 지정 auto_now=True 옵션이 지정되면, 매 save 호출 시점에 현재 일시가 자동 지정 |
|
TimeField | 시간 필드 auto_now_add=True 옵션이 지정되면, 최초 save 호출 시점에 현재 시간이 자동 지정 auto_now=True 옵션이 지정되면, 매 save 호출 시점에 현재 시간이 자동 지정 |
|
DurationField | 시간 길이 필드 (datetime.timedelta 대응) |
기타
분류 | 모델 필드 타입 | 설명 |
기타 필드 | BooleanField | 참/거짓 필드 |
GenericIPAddressField | 아이피 v4/v6 필드 | |
JsonField | Json 필드 | |
UUIDField | uuid 필드 |
관계
분류 | 모델 필드 타입 | 설명 |
관계 필드 | ForeignKey | 다 : 1 관계 ex. 댓글/포스팅, 프로필/유저 |
OneToOneField | 1 : 1 관계 ex. 유저/프로필 |
|
ManyToManyField | 다 : 다 관계 ex. 포스팅/태그 |
반응형
'Django > DRF' 카테고리의 다른 글
[Django] Model Meta 설정 Permission을 이용한 사용자 접근 제한 (0) | 2024.07.03 |
---|---|
[Django] Bulk Operations에 대해서 (0) | 2024.07.03 |
[Django] Generic date views (Archive views) (0) | 2024.06.18 |
[Django] django_extensions (0) | 2024.06.17 |
[Django] URL Reverse를 통한 URL 작성 (0) | 2024.06.17 |