모델(Model)의 변경내역을 관리하고 이 변경내역을 DB에 적용시키는 방법
하나의 Migration 파일은 생성된 시점의 모델의 구조(DB의 스키마)를 갖고 있음

● Migration 생성

$ python manage.py makemigrations [app명]

→ app명 생략시 전체app에 대한 Migration 생성

● Migration 적용

$ python manage.py migrate [app명]

→ app명 생략시 전체app에 대해 Migration 적용

● Migration 적용여부 확인

$ python manage.py showmigrations [app명]

→ [X] 표시된 것이 적용된 Migration

● 적용된 SQL문 확인

$ python manage.py sqlmigrate [app명] [migration명]

● 적용된 Migration 초기화

$ python manage.py migrate --fake [app명] zero

→ 해당 app의 모든 Migration 적용 해제
→ 해당 app의 [X] 표시 제거

● 초기화된 초기 Migration 페이크 적용 (페이크 마이그레이션)

  • Migration 초기화 시 초기 마이그레이션인 0001_initial도 같이 초기화되었기 때문에 테이블이 DB에 이미 존재하여 마이그레이션을 실행할 수 없게 된다.
  • 초기 마이그레이션을 fake migrate하여 처리된 것 처럼 할 수 있다.
$ python manage.py migrate --fake-initial [app명]

Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
  Applying blog.0001_initial... FAKED
  Applying blog.0002_auto_20190604_0938... OK

→ initial 마이그레이션만 FAKED 처리되고 그 뒤부터 마이그레이션이 이루어진다