모델은 부가적인 메타 데이터를 가진 데이터베이스의 레이아웃(구조)이다.

데이터의 필수적인 필드들과 동작들을 포함하고 있으며, 데이터 모델을 한 곳에서 정의하고 이것으로 편리한 관리를 할 수 있도록 세팅할 수 있다.

Django는 migration 모두 모델 파일로부터 유도되며, 이 migration들은 Django가 데이터 스키마의 업데이트를 통해 현재의 모델과 이어질 수 있게 해주는 이력이다.

 

 

예를 들어 설문조사(poll) 앱을 위한 세팅을 진행해보겠다.

 

 

 

1. polls_203/models.py 수정

이를 위해 Question과 Choice 라는 두개의 모델을 만들 것이며

Qustion은 질문(question)과 발행일(publication)을 위한 두 필드를 가지도록,

Choice는 선택지(choice)와 표(vote) 계산을 위한 두 필드를 가지도록 설정하겠다.

vim polls_203/models.py

from django.db import models
  
# Create your models here.

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)

 

 

 

2. saja_site/settings.py 수정

vim saja_site/settings.py

=====================================

# Application definition

INSTALLED_APPS = [
    'polls_203.apps.Polls203Config',      # 이 부분의 Polls203Config는 polls_203 이기 때문에 이와 같이 설정, polls 라면 PollsConfig 로 해야함)
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

=====================================

 

 

 

3. model에 대한 변경사항을 migration으로 저장하고 싶다고 Django에게 알리기

python manage.py makemigrations polls_203

python 심볼릭 링크 설정이 되어있지 않다면 위 명령어가 아니라 아래 명령어를 사용해야한다.

python3 manage.py makemigrations polls_203

만약 심볼릭 링크 설정을 진행하여 작성자의 테스트 환경과 동일하게 만들기 원하신다면 아래 페이지를 참조하여 작업해주면 된다.

https://growingsaja.tistory.com/171

 

필자는 심볼릭 링크 세팅이 되어있음을 가정하고 진행을 하도록 하겠다.

 

Migrations for 'polls_203':

    polls_203/migrations/0001_initial.py:

        - Create model Choice

        - Create model Question

        - Add field question to choice

와 같이 출력된다면 정상 처리된 것으로 보면 된다.

 

 

 

4. sql migration 작업 진행

아래는 3번 항목 작업으로 생성된 polls_203/migrations/0001_initial.py 파일을 참조하여 작업한다는 명령어이다.

python manage.py sqlmigrate polls_203 0001

 

 

 

5. migrate 진행

migrate를 통해 데이터베이스에 모델과 관련된 테이블을 생성해보자.

python manage.py migrate

 

 

 

 - 모델 파일을 수정하였고

 - 수정된 모델 내용으로 변경사항에 대한 마이그레이션을 생성하였고 - makemigration

 - 변경사항을 데이터베이스에 적용시켜보았다. - migrate

 

+ Recent posts