Web
Django) Field
서영환
2024. 9. 26. 17:35
장고에서는 기본적으로 사용할 수 있는 필드를 통하여 다양한 데이터 유형을 저장 할 수 있고, 저장 할 때 기본적인 검증을 수행하게 설계가 되어있다. 그러나 수동으로 값을 저장 할 때에는 검증로직을 직접 제작을 해야 한다.(검증로직 제작을 하지 않고 기존에 있는 걸 사용할때에는 save()전에 모델객체.full_clean()를 사용하면 된다.)
모델 기본 필드
- 자동 증가 필드
- AutoField : 자동으로 증가하는 정수 필드로, 주로 기본 키로 사용
- BigAutoField : AutoField와 유사하지만, 더 큰 범위의 정수를 처리
- 숫자 필드
- IntegerField: 정수를 저장
- BigIntegerField: 더 큰 범위의 정수를 저장
- SmallIntegerField: 작은 범위의 정수를 저장
- PositiveIntegerField: 양수만 저장
- PositiveSmallIntegerField: 작은 범위의 양수만 저장
- DecimalField: 고정 소수점 수를 저장하며, 정확한 소수점 연산이 가능
- FloatField: 부동 소수점 수를 저장
- 문자열 필드
- CharField: 길이 제한이 있는 문자열을 저장, max_length가 필요
- TextField: 길이 제한이 없는 긴 문자열을 저장
- EmailField: 이메일 주소 형식의 문자열을 저장하며, 유효성 검사가 포함
- SlugField: URL 슬러그 형식의 문자열을 저장
- URLField: URL 형식의 문자열을 저장하며, 유효성 검사가 포함
- 날짜 및 시간 필드
- DateField: 날짜를 저장
- TimeField: 시간을 저장
- DateTimeField: 날짜와 시간을 함께 저장
- 파일 및 이미지 필드
- FileField: 파일 시스템에 파일을 저장하고 경로를 관리
- ImageField: 이미지를 저장하며, FileField를 확장하여 이미지 유효성 검사를 추가
- 기타 필드
- BooleanField: True 또는 False 값을 저장
- NullBooleanField: True, False, 또는 NULL 값을 허용하는 불리언 필드(Django 3.1 이후로는 사용하지 않는 것이 권장)
- BinaryField: 이진 데이터를 저장
- UUIDField: UUID 데이터를 저장하는 필드
모델 공통 필드 옵션
- null: 이 옵션이 True로 설정되면, 데이터베이스에서 해당 필드에 NULL 값을 허용. 기본값은 False. 주로 CharField나 TextField에서는 사용을 권장하지 않는다. 이는 NULL과 빈 문자열이 혼동될 수 있기 때문이다.
- blank: 이 옵션이 True로 설정되면, 폼 유효성 검사에서 해당 필드를 비워둘 수 있다. 기본값은 False. null과는 다르게, blank는 폼 유효성 검사와 관련이 있다.
- choices: 선택 가능한 값들의 집합을 정의 한다. 이 인수가 제공되면, 기본 폼 위젯은 선택 상자로 대체되어 선택 가능한 값만 입력할 수 있다.
- default: 필드의 기본값을 설정 한다. 이 값은 객체가 처음 생성될 때 사용 된다.
- primary_key: 이 옵션이 True로 설정되면, 해당 필드를 모델의 기본 키로 지정 한다. 기본적으로 Django는 각 모델에 자동 증가하는 id 필드를 기본 키로 추가 된다.
- unique: 이 옵션이 True로 설정되면, 테이블 전체에서 해당 필드의 값이 고유해야 한다.
- verbose_name: 사람이 읽기 쉬운 형식으로 필드명을 지정 한다. 지정하지 않으면 Django가 자동으로 필드명을 사용하여 생성 한다.
- editable: 이 옵션이 False로 설정되면, 해당 필드는 관리자 인터페이스나 폼에서 수정할 수 없다. 기본값은 True.
특수 필드 옵션
- CharField
- max_length: 저장할 수 있는 문자열의 최대 길이를 지정, CharField를 사용할 때 필수로 지정
- DateField
- auto_now: 객체가 저장될 때마다 현재 날짜로 자동 설정
- auto_now_add: 객체가 처음 생성될 때 현재 날짜로 자동 설정
- DecimalField
- max_digits: 저장할 수 있는 숫자의 전체 자릿수를 지정
- decimal_places: 소수점 이하 자릿수를 지정
- ForeignKey
- on_delete: 관련 객체가 삭제될 때의 동작을 정의
- related_name: 역참조 시 사용할 이름을 정의
- ManyToManyField
- related_name: 역참조 시 사용할 이름을 정의
- through: 중간 테이블을 명시적으로 지정