Search
🛠️

Django FIeld & 인자 정리

목차

Field 종류

일반 Field

AutoField : 자동으로 증가하는 IntegerField이다. 기본키 필드를 추가할 때 주로 사용한다.
SmallAutoField : 1 ~ 32767 값 저장 가능한 AutoField이다.
BigAutoField : 1 ~ 9223372036854775807 값 저장 가능한 AutoField이다.
IntegerField : -2147483648 ~ 2147483647 값 가능 저장 필드
SmallIntegerField : 0 ~ 32767 값 저장 필드
BigIntegerField : -9223372036854775808 ~ 9223372036854775807 값 저장 필드
BinaryField : 바이너리 값을 저장하는 필드, Binary 값에 쿼리셋을 필터링할 수 없기 때문에 제한된 기능만 사용 가능하다.
BooleanField : True / False 값을 저장하는 필드
FloatField : 부동소숫점 숫자 값을 저장하는 필드 (python의 Float 인스턴스)
DecimalField : 고정소숫점을 데이터로 가지는 필드 (python의 Decimal 인스턴스)
인자 이름
기능
값 형식
max_digits
소숫점 최대 자리수
0보다 큰 정수
decimal_places
숫자 저장 시 함께 저장되는 소숫점 자리수
0보다 큰 정수
CharField : 문자열을 저장하는 필드
인자 이름
기능
값 형식
max_length
최대 저장 가능한 문자열 길이
0보다 큰 정수
TextField : 많은 양의 문자열을 저장하는 필드
EmailField : EmailValidator를 사용하여 이메일 주소인지 확인하는 CharField이다.
URLField : URL 문자열 값을 저장하는 필드
인자 이름
기능
값 형식
max_length
최대 URL 문자열 길이 기본 값은 200
0보다 큰 정수
UUIDField : UUID 데이터 유형 값을 저장하는 필드
DateField : 날짜와 시간을 저장하는 필드, datetime.datetime 인스턴스에 의해 표현된다.
인자 이름
기능
값 형식
auto_now
데이터 저장 시 마다 현재 시간 저장 여부
Boolean
auto_now_add
데이터 최초 생성 시 현재 시간 저장 여부
Boolean
TimeField : 시간을 저장하는 필드, datetime.time 인스턴스에 의해 표현된다.
DateField와 동일한 옵션 사용
DateField : 날짜를 저장하는 필드, datetime.date 인스턴스에 의해 표현된다.
DateField와 동일한 옵션 사용
DurationField : 날짜 사이의 기간을 저장하는 필드, datetime.timedelta 인스턴스에 의해 표현된다.
FileField : 파일 업로드 필드
기본 FileSystemStorage를 사용하면 저장되는 로컬 파일 시스템 위치가 MEDIA_ROOT 경로로 추가된다.
인자 이름
기능
값 형식
upload_to
업로드 될 디렉터리 / 파일 이름
- 문자열 - strftime() 형식이 포함된 문자열 (uploads/%Y/%m/%d) - instance(해당 파일에 붙는 특별한 값), filename(원본 파일에 주어진 이름) 이 두가지를 인자로 받으며, Unix 스타일의 슬래시가 포함된 값을 리턴하는 함수 (예시)
storage
파일의 저장 및 검색을 처리하는 storage 개체
FileSystemStorage 객체, 또는 FileSystemStorage 객체를 사용한 함수
함수를 upload_to 값으로 설정하는 예시
storage 옵션 설정 예시
FileFIeld 모델을 사용한 인스턴스에서 사용되는 메소드 [수정 중...]
ImageField : 이미지를 저장하는 필드
FileField에서 모든 특성 및 메서드를 상속할 뿐 아니라 업로드된 개체가 유효한 이미지인지 확인합니다. 또한 사용을 위해 Pillow 라이브러리 설치가 필요합니다. (pip install pillow)
인자 이름
기능
값 형식
height_field
이미지 저장 시, 높이를 자동으로 채워주는지 여부 기본 값 None
0보다 큰 숫자
width_field
이미지 저장 시, 너비를 자동으로 채워주는지 여부 기본 값 None
0보다 큰 숫자
FIlePathField : 파일 경로를 저장하는 필드
allow_filesallow_folders 둘 중 하나는 반드시 True 이어야 한다.
인자 이름
기능
값 형식
path
FilePathField가 사용하는 파일 시스템 절대 경로
문자열 (EX: /home/images)
match
파일 이름 필터링 시 사용할 정규식이다. 기본 파일 이름에만 적용된다.
문자열 (EX: foo.*\.txt$)
recursive
path 값의 모든 하위 디렉터리가 포함하는지 여부 기본 값은 False
Boolean
allow_files
지정된 위치의 파일을 포함하는지 여부 기본 값은 True
Boolean
allow_folders
지정한 위치의 폴더를 포함할지 여부 기본 값은 True
Boolean
GenericIPAddressField : 문자열 형식의 IPv4 또는 IPv6 주소
인자 이름
기능
값 형식
protocol
허용되는 형식을 설정한다. 기본 값은 both
문자열 IPv4, IPv6, both 중 하나 선택
unpack_ipv4
::ffff:192.0.2.1과 같은 IPv4 매핑된 주소의 압축을 푼다. protocol 옵션 값이 both 값으로 설정되어야만 사용 가능하다. 기본 값은 false
Boolean
JSONField : JSON 인코딩 값을 저장하는 필드
JSONField는 PostgreSQL, SQLite, MariaDB 10.2.7+, MySQL 5.7.8+, Oracle에서 지원됩니다.
인자 이름
기능
값 형식
encoder
json 인코딩 값을 직렬화하는 인코더 기본 값은 json.JSONEncoder
DjangoJSONEncoder를 사용한 클래스
decoder
json 값을 역직렬화하는 디코더 기본 값은 json.JSONDecoder
Boolean
SlugField : 슬러그를 저장하는 필드
슬러그는 신문에서 사용하는 용어로, 무언가의 짧은 라벨을 나타낸다. 주로 기존의 데이터를 이용하여 유효한 URL을 만드는데 사용한다. 슬러그를 만들때는 문자, 숫자, 밑줄 또는 하이픈(_)만 사용한다.
인자 이름
기능
값 형식
max_length
최대 슬러그의 길이 기본 값은 50
0보다 큰 정수
allow_unicode
슬러그 값의 ASCII 문자 외의 유니코드 사용 가능 여부 기본 값은 False
Boolean

관계형 Field

ForeignKey : 모델의 1:N(일대다) 관계를 사용하기 위한 ForeignKey를 사용하는 필드
인자 이름
기능
값 형식
to
관계를 설정하려는 모델 * ‘self’ 를 사용하면, 재귀로 참조가 가능하다. * 아직 정의된 모델과의 관계를 작성하기 위해서는 모델 개체 자체가 아닌 이름으로 사용도 가능하다.
parent Model 개체
on_delete
- models.cascade : SQL의 ON DELETE CASCADE와 동일하다. 연결된 객체와 ForeignKey 객체가 같이 삭제된다. - models.protect : ForeignKey 객체는 삭제되지 않도록 ProtectedError 를 발생시켜 보호한다. - models.set_null : ForeignKey 객체값을 NULL로 설정한다. - models.set_default : ForeignKey 객체값을 default 값으로 설정한다. - models.set() : set에 설정된 함수를 사용하여 설정한다. - models.do_nothing : 아무런 행동을 하지 않는다. 참조 무결성을 해칠 수 있기 때문에 사용은 추천하지 않는다.
limit_choices_to
ModelForm이나 admin 사용 시, 사용 가능한 선택지를 제한한다. (기본적으로는 쿼리 셋의 모든 객체를 선택할 수 있다.) * EX) limit_choices_to={'is_staff': True} : is_staff 필드의 값이 True인 객체만 선택을 가능
딕셔너리 값, Q 개체 또는 사전 또는 Q 개체를 반환하는 호출 가능 개체 중 하나를 사용할 수 있다.
related_name
1:N 관계 / M:N 관계에 있는 두 모델(A:B)에서 A모델 인스턴스와 관련된 B모델의 객체를 얻기위해 사용하는 이름이다. 즉, ORM에서 관련 개체(A)에서 현재 개체(B)의 사용할 수 있도록 이름을 연결다리로 설정하는 것이다. * ORM에서 연결된 쿼리셋을 반환받기 위해 사용한다. * Django가 역방향 관계를 만들지 않도록 하려면 ‘+’ 값을 사용한다. * 필드와 동일한 이름을 사용하면 안된다.
문자열
related_query_name
1:N 관계 / M:N 관계에 있는 두 모델(A:B)에서 A모델 인스턴스와 관련된 B모델의 객체를 얻기위해 사용하는 이름이다. 즉, ORM에서 관련 개체(A)에서 현재 개체(B)의 사용할 수 있도록 이름을 연결다리로 설정하는 것이다. * 쿼리 필터링에서 사용할 수 있다. * related_query_name 미 지정시 related_name이 기본 값이다. * 필드와 동일한 이름을 사용하면 안된다.
문자열
to_field
PK 아닌 필드 값으로 1:N 관계를 설정하기 위해 사용한다. * 해당 옵션을 사용하는 필드는 반드시 unique=TRUE 이어야한다.
db_constraint
참조 무결성 체크 여부 * 기본 값은 True
Boolean
ManyToManyField : 모델의 N:M(다대다) 관계를 사용하기 위한 ForeignKey를 사용하는 필드
ForeignKey의 인자를 대부분 공통으로 사용한다.
OneToOneField : 모델의 1:1 (일대일) 관계를 사용하기 위한 ForeignKey를 사용하는 필드
ForeignKey의 인자를 대부분 공통으로 사용한다.

Field 공통 옵션 종류

옵션 이름
기능
기본 값
값 형식
Field.null
Null 값 허용 여부 설정
False
Boolean
Field.blank
공백 값 허용 여부 설정
False
Boolean
Field.db_column
DB 테이블에 저장될 컬럼의 이름 설정 미 설정 시, _id 접두사가 붙는 이름으로 설정된다.
문자열
Field.db_index
해당 필드의 index 설정 여부 설정
사용 시 True
Field.default
해당 필드 값의 기본 값 설정
각 필드의 정해진 값
Field.editable
해당 필드를 admin이나 다른 ModelForm에서 표시할 것인지 여부
True
Boolean
Field.error_messages
null, blank, invalid, invalid_choice, unique_for_date가 포함된 error_messages 값
Field.help_text
해당 필드의 입력 도움말 값
문자열
Field.primary_key
해당 필드를 primary_key 로 사용할지 여부 * primary_key로 사용되는 필드는 null=False & unique=True 가 동시 적용된다. 또한, 한 오브젝트의 primary_key는 한 필드만 사용 가능하며 읽기 전용으로 사용한다.
사용 시 True
Field.unique
이 필드의 값은 테이블에서 고유해야 되는지 여부
사용 시 True
Field.unique_for_date
DateField, DateTimeField 에서 사용하는 옵션이다. 해당 필드 값의 날짜 값이 고유해야 되는지 여부
사용 시 True
Field.unique_for_month
DateField, DateTimeField 에서 사용하는 옵션이다. 해당 날짜 필드 값의 월(Month) 값이 고유해야 되는지 여부
사용 시 True
Field.unique_for_year
DateField, DateTimeField 에서 사용하는 옵션이다. 해당 날짜 필드 값의 연(year) 값이 고유해야 되는지 여부
사용 시 True
Field.verbose_name
Admin 페이지 등에서 필드를 조회할 때, 필드 조회가 쉽도록 유저가 붙어주는 이름
문자열
Field.validators
해당 필드의 제약조건을 설정하는 것 제약 조건을 커스텀해서 만들거나, Django에서 기본적으로 지원하는 함수를 사용해도 된다. - 예시 https://docs.djangoproject.com/ko/4.0/ref/validators/
List

참고

이름
태그
URL
COUNT5