Django 프론트& 백엔드 개발

[Model] 데이터 모델링과 마이그레이션 흐름 정리

Data Jun 2026. 1. 4. 14:54

Django에서 데이터를 다룰 때는
모델 정의 → 마이그레이션 생성 → DB 반영이라는 일관된 흐름을 따릅니다.

 

1. 사용할 데이터 먼저 정의하기

먼저 화면과 기능에서 어떤 데이터가 필요한지를 확인합니다.

  • 메뉴 이름
  • 설명
  • 가격
  • 이미지 경로

이렇게 데이터 구조가 정리되면, 이를 모델(Model) 로 표현합니다.

 

2. 모델(Model) 작성

from django.db import models

class Menu(models.Model):
    name = models.CharField(max_length=50)
    description = models.CharField(max_length=50)
    price = models.IntegerField()
    img_path = models.CharField(max_length=255)

    def __str__(self):
        return self.name

 

  • 모델은 DB 테이블 설계도
  • Field는 컬럼 정의
  • __str__은 관리자 페이지나 디버깅 시 가독성을 위해 사용

 

3. 마이그레이션 생성 (설계도 만들기)

python manage.py makemigrations

 

이 명령어는:

 

“모델이 이렇게 바뀌었으니

DB를 이렇게 바꾸면 되겠어요”

 

라는 설계 파일(migration) 을 생성합니다.

foods/migrations/0001_initial.py
- Create model Menu

 

4. DB에 실제 반영하기

python manage.py migrate

이 명령어로:

  • 테이블 생성
  • 컬럼 추가
  • 변경 사항 적용

이 실제로 DB에 반영됩니다.

 

5. 전체 흐름 파악

사용할 데이터 정의
   ↓
models.py 작성
   ↓
makemigrations (설계도 생성)
   ↓
migrate (DB 반영)

이 순서는 Django에서 항상 동일합니다.

 

6. 정리하면

  • Model은 DB 구조를 코드로 표현한 것
  • makemigrations는 변경 이력을 만드는 단계
  • migrate는 DB에 실제 적용하는 단계
  • 모델 변경 = 항상 마이그레이션 필요

“모델은 코드지만,
DB에 반영하려면 반드시 migration을 거친다”