migration 3단계
- models.py
$ python manage.py makesmigrations
$ python manage.py migrate
1. migrations
django가 model 생긴 변화를 DB에 반영하는 방법
1) makemigrations
- model을 변경한 것에 기반한 새로운 마이그레이션(like 설계도) 만들때 사용
- 추가 수정을 할때는 추가 모델 필드 작성후 makemigrations를 다시 진행
- 추가시에는 아래와 같은 경고문(?)이 뜸
간단한 해석 : 필드를 추가하려는데 기본값도 없네?
1) 지금 여기서 기본값을 넣어
2) 아니면 여기서 나가서 models.py에 기본값을 넣어.
여기서 그냥 원하는 선택 번호를 입력 해주면 된다. 아래는 1번을 입력했을시:
위에서 엔터를 눌렀을시, 아래와 같이 새로운파일(설계도)이 생성되고 필드가 추가가 됨.
새로 생성된 파일을 살펴보면,
dependencies를 볼 수 있는데, 아래 0001 파일을 이어 받으며 새로운 필드가 추가 되었다는 뜻이다.
(DB는 기본적으로 빈값을 허용하지 않는다)
2) migrate
- makemigrations을 해준뒤 실행 해야함
- 기본적으로 내장된 앱들의 설계도(settings.py - INSTALLED_APPS에 기본적으로 작성 되있던것들)
- migrations을 db에 반영하기 위해 사용
- 설계도를 실제 db에 반영하는 과정
- 모델에서의 변경 사항들과 db의 스키마가 동기화를 이룸
< 생성된 db.sqlite파일 보는법>
- vsc 에서
sqlite
extension 설치
- db.sqlite3에 우클릭 open database 클릭
- 좌측하단에 아래와 같이 생성 됨
3) sqlmigrate
- 마이그레이션에 대한 SQL 구문을 보기 위해 사용
- 마이그레이션이 SQL 문으로 어떻게 해석되어 동작할지 미리 확인
4) showmigrations
- 프로젝트 전체의 마이그레이션 상태 확인하기 위해 사용
- 마이그레이션 파일들이 migrate 됐는지 안됐는지 여부 확인 가능.
X 되어있으면 완료 된거.
DateField's Options
1. auto_now _add
- 최초 생성일자
- django ORM이 최초 입력시에만 현재 날짜와 시간으로 갱신(테이블에 어떤 값을 최초로 넣을 때)
2. auto_now
- 최종 수정 일자
- django ORM이 save를 할 때 마다 날짜와 시간으로 갱신