Migrations
model 클래스의 변경사항(필드 생성, 수정, 삭제 등)을 DB에 최종 반영하는 방법
Migrations 과정
Migrations 핵심 명령어 2가지
model class를 기반으로 최종 설계도(migration) 작성 |
---|
|
최종 설계도를 DB에 전달하여 반영 |
---|
|
- 첫 migrate시 출력 내용이 많은 이유는?
- Django 프로젝트가 동작하기 위해 미리 작성되어있는 기본 내장 app들에 대한 migration 파일들이 함께 migrate 되기 때문
테이블 작성 |
---|
|
추가 Migrations
추가 모델 필드 작성
- 이미 기존 테이블이 존재하기 때문에 필드를 추가 할 때 필드의 기본 값 설정이 필요
- 1번은 현재 대화를 유지하면서 직접 기본 값을 입력하는 방법
- 2번은 현재 대화에서 나간 후 models.py에 기본 값 관련 설정을 하는 방법
- 추가하는 필드의 기본 값을 입력해야 하는 상황
- 날짜 데이터기 때문에 직접 입력하기 보다 Django가 제안하는 기본 값을 사용하는 것을 권장
- 아무것도 입력하지 않고 enter를 누르면 Django가 제안하는 기본 값으로 설정됨
- migrations 과정 종료 후 2번째 migration 파일이 생성됨을 확인
- 이처럼 Django는 설계도를 쌓아가면서 추후 문제가 생겼을 시 복구하거나 되돌릴 수 있도록 함( 마치 ‘git commit’)
📎 model class 에 변경사항이 생겼다면, 반드시 새로운 설계도를 생성하고 이를 DB에 반영해야 한다.
- model class 변경 → 2. makemigrations → 3. migrate
Model Field
DB테이블의 필드(열)을 정의하며, 해당 필드에 저장되는 데이터 타입과 제약 조건을 정의
- Charfield() : 길이의 제한이 있는 문자열을 넣을 때 사용(필드의 최대 길이를 결정하는 max_length는 필수 인자)
- Textfield() : 글자의 수가 많을 때 사용
- DateTimeField() : 날짜와 시간을 넣을 때 사용
- DateTimeField 의 선택인자 ( 시험에 내기 좋겠죠?? 잘 기억해 두세요 장난치기 좋겠쬬??)
auto_now
: 데이터가 저장될 때마다 자동으로 현재 날짜,시간을 저장(수정일)
auto_now_add
: 데이터가 처음 생성될 때만 자동으로 현재 날짜,시간을 저장(작성일)