Django 공식문서를 참조했습니다.
데이터베이스 셋업
기본으로 설치되어 있는 SQLite를 사용할 수 있다.
- SQLite 진입
# db.sqlite3 가 있는 위치에서
sqlite3 db.sqlite3
모델 만들기
모델이란, 부가적인 메타데이터를 가진 데이터베이스 구조!
1. polls/models.py에서 모델 작성
Question과 Choice 테이블을 만든다.
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
모델 활성화
모델을 통해 장고는 다음과 같은 일을 한다.
- 이 앱을 위한 데이터베이스 스키마 생성 (CREATE TABLE statements)
- Question와 Choice 객체에 대한 파이썬 데이터베이스 접근 API 생성
2. mysite/settings.py 수정
프로젝트에 polls 앱이 있다는 것을 알려야 한다.
INSTALLED_APPS에 PollsConfig 클래스 추가
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
3. 변경사항에 대한 마이그레이션 생성
모델에 대한 변경사항을 장고에 알리는 것
python manage.py makemigrations
💡 마이그레이션이란? Migrations
장고에서 모델에 대한 변경사항을 데이터베이스 스키마에 전파하는 방법
장고는 ORM을 사용하는데 DB 스키마를 git처럼 버전 관리 할 수 있도록 함
하나의 마이그레이션 파일은 해당 마이그레이션이 생성된 시점의 구조를 가짐
4. 변경사항을 데이터베이스에 적용
모델과 관련된 테이블을 생성한다.
python manage.py migrate
🧐 마이그레이션을 만드는 명령과 적용하는 명령이 분리된 이유는 무엇일까?
버전 관리 시스템에 마이그레이션을 커밋하고 앱과 함께 출시할 수 있도록 하기 위해서이다.