1) 모델 만들기
2) 모델 활성화
1) 모델 만들기
💡 모델이란?
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)
Django 모델은 "django.db.models.Model" 의 파생 클래스이고,
모델의 필드는 class의 속성으로 표현되며 이는 테이블의 컬럼에 해당된다.
(필드란 데이터베이스 테이블 column을 나타내는 파생 클래스이다. )
즉, 위의 코드에서는 question과 choice의 테이블이 생성된거고 그안의 question_text,pub_date,question,choice_text,votes들은 각 테이블들의 colum이름(=필드)이 된거다.
CharField,DateTimeField등은 필드의 타입이다.
(Primary Key 따로 설정해주지 않으면 pk 역활을 하는 id필드가 자동으로 추가되고, DB 테이블 생성시 자동으로 id칼럼이 생성된다.)
2) 모델 활성화 (데이터베이스 migration)
2-1) Migration 준비 작업
💡 Migration?
장고에서 모델 클래스를 생성하고 나면, 이 모델에 상응하는 테이블을 데이터베이스에 생성해야 한다.
이렇게 python에서 모델 클래스의 수정 및 생성을 데이터 베이스에 적용하는 과정을 migration이라고 한다.
모델을 활성화 하기 위해 우선 프로젝트에 어떤 앱이 생성되어 있는지를 알려주어야 한다.
=> ⭐️ 프로젝트의 settings.py의 INSTALLED_APPS에 생성한 앱을 추가해주면 된다.
(앱이름.apps.클래스명)
여기서 클래스명은 앱/apps.py 파일 내에 존재한다.
이후 python manage.py makemigrations 앱이름
실행
(makemigration: model이 업데이트되었다는 사실과 이러한 변경상황을 migration으로 저장 시키는 것.)
python manage.py migrate
을 통해 데이터베이스에 모델과 관련한 테이블을 생성해준다.
(migrate: db에 넘겨줌)
# 마이그레이션 파일 생성
$ python manage.py makemigrations <app-name>
# 마이그레이션 적용
$ python manage.py migrate <app-name>
# 마이그레이션 적용 현황
$ python manage.py showmigrations <app-name>
# 지정 마이그레이션의 SQL 내역
python manage.py sqlmigrate <app-name> <migration-name>
✔️ model 다 작성해주면 해야할 일 순서
1. 마이그레이션 파일 (초안) 생성하기 : makemigrations
2. 지정 마이그레이션의 SQL 내역 확인 : sqlmigrate
2. 해당 마이그레이션 파일을 DB에 반영하기 : migrate
(makemigration 했으면 무조건 migrate 해야 완성 데이터 베이스에 적용 되는 것임)
=> 그러니깐...! 모델 파일 다 생성해서 데이터를 만들어 줬으면 migrate를 통해서 실제 데이터 베이스에 넘겨주어야 한다.