[Django 기초] Model의 Field
Django Model 은 대부분의 데이터를 저장할 수 있는 필드(Field)를 지원하는데 모든 필드에 사용할 수 있는 공통 옵션이
있고, 각각의 필드마다 가지고 있는 고유 옵션이 있다.
필드 (Field)
필드(Field)는 데이터 테이블에서의 열(column), 즉 데이터의 속성을 의미한다.
- CharField
class CharField(max_length = None)
제한된 길이의 문자열을 위한 필드
: max_length 필수 인수이며 입력할 최대 길이를 설정
- IntegerField
class integerField()
정수 값을 위한 필드이며 -2147483648 부터 2147483647 범위를 지원한다.
- BooleanField
class BooleanField()
Boolean 값을 위한 필드
- DateField
class DateField(auto_now = False, auto_now_add = False)
DataField는 파이썬의 datetime.date 객체 형태로 표시되는 날짜 필드
: auto_now
true로 설정되면 해당 객체가 변경(save) 될 때마다 자동으로 필드 값을 지금으로 수정한다. '마지막 수정 시간'
: auto_now_add
모델이 처음 생성될 때 한 번, 자동으로 필드 값을 지금으로 설정한다. '생성된 시간'
- DateTimeField
class DateTimeField(auto_now=False, auto_now_add = False)
파이썬의 datetime.datetime 객체 형태로 표시되는 날짜 필드
- FileField
class FileField(upload_to = None, max_length=100)
파일 업로드를 위한 필드
: upload_to 업로드될 경로를 지정하는 필드로 Strorage.save()함수로 값이 전달되어 저장한다.
스토리지 함수 공식 문서
(https://docs.djangoproject.com/en/3.1/ref/files/storage/#django.core.files.storage.Storage.save
- ImageField
class ImageField(upload_to =None, height_field= None, width_field= None, max_length=100)
FileField를 상속하여 구현되는 파일 업로드를 위한 필드이며 기본적으로 최대 길이가 100인 문자열 형식으로 생성
위에서 나왔던 FileField에서 업로드된 파일이 정상적인 이미지 파일인지 확인하는 과정이 추가된 필드로 이미지 처리를
위한 Pillow 라이브러리가 필수적으로 필요하다.
: height_field & width_field 객체가 저장 될 ㄸ/ㅐ 이미지의 높이와 너비값이 자동으로 채워진다.
이 밖에도 IP 주소를 체크를 하는 GenericIPAddressField, JSON 파일을 위한 JSONField (django 3.1 버전 이상부터 지원)
특정 폴더의 파일 패스를 표현하는 FilePathField, URL을 위한 URLField 등 다양한 필드가 있다.참고하세요. ( https://docs.djangoproject.com/en/3.1/ref/models/fields/#django.db.models.Field.default )
옵션(Option)
아래 옵션은 모든 필드 타입에서 사용할 수 있으며, 선택적으로 적용할 수 있다.
null
Field.null
기본 값은 False이며 Null 값 허용 여부를 선택한다.
만약 이 null 옵션을 적용할 필드가 문자열 기반 필드 (Char, Text)일 경우에는 주의해서 사용해야 한다. ''(빈 문자열)과
Null 모두 해당 필드의 데이터가 없다는 것을 의미하기 때문이다. 일반적으로 데이터가 없다는 것을 의미하는 값은
하나여야 하므로 Django는 문자열 기반 필드가 데이터가 없을을 표시할 때 ''(빈 문자열)을 사용하도록 권장하고 있다.
blank
Field.blank
기본 값은 False이며 True로 설정한 경우 필드 값을 빈 값으로 설정할 수 있다.
그렇다면 null 과 blank의 차이는?
null은 온전히 데이터베이스와 관련된 사항이고 blank는 데이터의 유효성 검사와 관련된 옵션이다.
예를 들어 blank가 True라면 해당 필드에 데이터를 입력하지 않아도 유효성 검사를 통과하게 된다.
default
Field.default
필드의 기본값을 설정하는 옵션으로 값 또는 함수가 들어갈 수 있다.
db.column
Field.db_column
해당 필드에 사용할 데이터베이스 속성 명을 지정한다. 따로 지정하지 않을 경우 일반적으로 필드의 이름을 사용한다.
공식문서
https://docs.djangoproject.com/en/3.1/ref/models/fields/#django.db.models.Field.default