[DJANGO]Model fields

박민하·2022년 6월 19일
0

DJANGO

목록 보기
10/22
post-thumbnail

✅ Fields?

  모델에는 여러 클래스 변수가 있으며, 각 클래스 변수는 모델의 데이터베이스 필드(컬럼, 열)를 나타낸다. 이 변수에 들어갈 필드 값들이 데이터베이스의 레코드(행)가 된다. 아래 사진을 예로 들어보면,

  • Menu 클래스에는 name라는 변수가 있고, menus라는 데이터베이스 테이블의 필드가 된다.
  • name에 들어갈 필드 값의 길이는 최대 45자를 넘지 못한다.
  • Category 클래스에는 name과 menu라는 변수가 있고, categories라는 데이터베이스 테이블의 필드가 된다.
  • name에 들어갈 필드 값의 길이는 최대 45자를 넘지 못한다.
  • menu에 들어갈 필드 값은 Menu 클래스를 외래키로 참조하며, 해당 클래스가 삭제되면 같이 삭제된다.

위와 같이 필드에 다양한 인수와 타입을 지정해서 데이터베이스를 만들 수 있다. 그 종류가 너무 다양해서 자주 쓰는 것들만 정리하고, 그 외에는 아래 참고 사이트에서 공식문서를 뒤져보자.

✅ 필드 인수

인수설명
default필드의 기본값 지정. 'default=0' 이면 기본값이 0이 된다.
null'null=True' 라면 데이터베이스에 빈 값을 null 값으로 저장(기본값=False)
blank'blank=True' 라면 필드가 빈 값을 받을 수 있다(기본값=False)
choices길이가 2인 변수를 선택지 변수로 지정할 수 있다. 'choices=변수명' 으로 사용한다.
primary_key'primary_key=True' 라면 필드를 기본키로 설정한다.
on_delete=models.<인수값>참조 된 객체가 삭제 될 때의 동작을 지정한다.
CASCADE: 삭제 시 개체를 참조하는 모든 개체 삭제
PROTECT: 참조 된 개체의 삭제를 방지
RESTRICT: 삭제 시 참조 된 개체가 NULL로 설정

✅ 필드 타입

타입설명
CharField작거나 중간 크기의 고정된 길이의 문자열. 데이터의 최대 길이(max_length)를 정해줘야 함.
TextField임의의 긴 문자열.
IntegerField정수값(모든 숫자)을 저장
DecimalField소숫점을 지정 할 수 있는 10진수 값(정밀함)
DateField날짜정보를 저장.
DateTimeField날짜, 시간정보 저장.
auto_now_add=True: 객체가 처음 생성 될 때 사용
예)created_at = models.DateTimeField(auto_now_add=True)
auto_now=True: 매번 객체가 저장 될 때 사용(update용)
예)updated_at = models.DateTimeField(auto_now=True)
EmailField이메일 주소 저장
FileField파일 업로드
ImageField이미지 업로드
AutoField자동적으로 증가하는 IntegerField의 타입. id 값을 자동증가 시킬때 쓴다.
ForeignKey일대다 관계를 지정
ManyToManyField다대다 관계를 지정
through: 중간 테이블의 class 이름 지정

✅ 참고 사이트

Django 공식문서 - models/fields
mdn - Django Tutorial Part 3: Using models

profile
backend developer 🐌

0개의 댓글