🧱 Django 모델 & 마이그레이션 완전 정복
이 강의는 Django 모델 정의부터 필드 구성, 마이그레이션 적용까지 데이터베이스를 어떻게 효율적으로 다룰 수 있는지 알려줍니다. 북마크 앱을 예제로 하여, 실제 테이블 설계부터 적용까지의 전체 흐름을 이해할 수 있도록 구성되어 있습니다.
1. 📚 장고 모델과 필드 정의
1.1. 모델과 필드의 개념
- 모델(Model): 데이터베이스의 테이블 구조 정의
- 필드(Field): 각 테이블에 저장될 컬럼 속성 정의
- 모델 정의를 통해 DB 명령어(CREATE, ALTER 등)를 자동으로 수행 가능
1.2. 예시 모델 정의 (Bookmark)
def class Bookmark(models.Model):
name = models.CharField(max_length=100)
url = models.URLField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = '북마크'
verbose_name_plural = '북마크 목록'
- CharField: 문자열 (varchar)
- URLField: URL 형식 문자열 + 유효성 검사 포함
- DateTimeField:
- auto_now_add=True: 생성 시점 자동 저장
- auto_now=True: 수정 시점 자동 저장
1.3. 참고
2. 🛠️ DB 브라우저 설치 및 데이터 확인
- DB Browser for SQLite 설치:
- 검색: "db browser for sqlite"
- 본인 OS에 맞는 파일 다운로드 및 설치
- 프로젝트 폴더에서 db.sqlite3 열기
- 테이블 생성 여부 확인: 초기 상태에서는 0개 테이블
3. ⚙️ Django 마이그레이션 기본 흐름
3.1. 초기 마이그레이션 실행
python manage.py migrate
- 기본 테이블 (auth, sessions, admin 등) 자동 생성됨
- DB Browser에서 테이블 확인 가능 (F5 새로고침)
3.2. 앱 모델 반영
python manage.py makemigrations
- /migrations 폴더 내 0001_initial.py 생성
- 테이블 정의만 포함, 실제 적용은 안 됨
python manage.py migrate
- 정의된 마이그레이션을 DB에 실제로 적용
- 테이블이 생성되고 내용 반영됨
4. 🧠 마이그레이션 vs Git 커밋 비유
구분 설명 비유
makemigrations | 변경 내용 정의 (파일 생성) | Git의 commit |
migrate | DB에 실제 적용 | Git의 push |
💡 makemigrations는 준비 단계일 뿐, 반드시 migrate를 통해 DB에 적용해야 합니다.
5. 📌 테이블 이름 규칙
- 테이블명: 앱이름_모델이름
- 예: bookmark_bookmark
✅ 정리
- Django 모델은 데이터베이스를 ORM 방식으로 설계하고 관리할 수 있는 도구
- makemigrations → 변경 내역 정의
- migrate → 실제 DB에 적용
- 모델에 다양한 필드를 정의하고 생성/수정일시를 자동 기록 가능
- DB 구조 변경 시에도 마이그레이션으로 쉽게 관리 가능
🎓 다음 수업에서는 모델 데이터를 어떻게 Admin 페이지에서 관리하는지 배워볼 예정입니다. 수고하셨습니다!
'Django' 카테고리의 다른 글
Chapter 2-6 Django ORM 요약본 – QuerySet 기초 활용법 정리 (0) | 2025.04.30 |
---|---|
Chapter 2-4 Django Admin 기능 완전 정복 요약본 (0) | 2025.04.30 |
Chapter 2-2 Django Views Tutorial (0) | 2025.04.30 |
Chapter 2-1 Django 앱 생성 및 구조 설명 가이드 (0) | 2025.04.30 |
Chapter 1-10 Django로 구구단 페이지 만들기 (0) | 2025.04.29 |