백엔드
Django에 대하여(10)_Migrations
데이터분석가 이채은
2024. 3. 31. 09:00
1. Migrations
Migrations란, model 클래스의 변경사항(필드 생성, 수정, 삭제 등)을 DB에 최종 반영하는 방법입니다.
1.1 Migrations 핵심 명령어 2가지
- model class를 기반으로 최종 설계도(migration) 작성
python manage.py makemigrations
- 최종 설계도를 DB에 전달하여 반영
python manage.py migrate
1.2 migrate 후 DB 내에 생성된 테이블 확인
2. 추가 Migrations
아래 그림과 같이 이미 생성된 테이블에 필드를 추가하고 싶을 땐 어떻게 해야 할까요?
2-1 추가 모델 필드 작성하기
# articles/models.py
class Article(models.Model):
title = models.CharField(max_length=10)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
2-2 추가 필드의 기본 값 설정하기
python manage.py makemigrations
- 이미 기존 테이블이 존재하기 때문에 필드를 추가할 때 필드의 기본 값 설정이 필요
- 1번은 현재 대화를 유지하면서 직접 기본 값을 입력하는 방법
- 2번은 현재 대화에서 나간 후 models.py에 기본 값 관련 설정을 하는 방법
2-3 추가 필드의 기본 값 입력하기
- 추가하는 필드의 기본 값을 입력해야 한다.
- 추가하려는 데이터가 날짜 데이터이기 때문에 직접 입력하기 보다 Django가 제안하는 기본 값을 사용하는 것을 권장
- 아무것도 입력하지 않고 enter를 누르면 Django가 제안하는 기본 값으로 설정된다.
2-4 migration 파일 생성 확인
- migrations 과정 종료 후 2번째 migration 파일이 생성됨을 확인
- 이처럼 Django는 설계도를 쌓아가면서 추후 문제가 생겼을 시 복구하거나 되돌릴 수 있도록 함 ('git commit'과 비슷)
2-5 migrate 후 테이블 필드 변화 확인
python manage.py migrate
요약
model class에 변경사항 (1. model class 변경)이 생겼다면, 반드시 새로운 설계도를 생성(2. makemigrations)하고, 이를 DB에 반영 (3. migrate) 해야 한다.