테이블을 생성하고 싶은 APP의 models.py에서 작업한다.
그리고 아래와 같이 코드를 작성한다.
from django.db import models
# Create your models here.
class Board(models.Model):
title = models.CharField(max_length=20)
content = models.TextField(max_length=500)
create_date = models.DateTimeField(auto_now_add=True)
modify_date=models.DateTimeField(auto_now=True, null=True, blank=True)
def __str__(self):
return self.title
이제부터 위 코드를 하나씩 뜯어보도록 하자!!
먼저 Model클래스를 상속받는 Board클래스를 정의해준다.
이 클래스는 필드를 정의하기 위한 모델 클래스이다.
클래스 안의 각 한 줄이 Table 및 column을 정의하고 있다.
Table / column 은 필드타입과 필드 옵션을 통해 정의한다.
(괄호에 있는 것이 필드 옵션이다.)
id column은 이미 Model class에 정의되어 있다.
이 id column은 PK, Auto Increament 제약조건이 미리 정의되어 있다.
필드타입에는 여러가지가 있지만 위에서 사용한 타입만 적어보았다.
( + FileField )
필드옵션도 마찬가지로 여러가지가 있지만 위에서 사용한 옵션만 적어보았다.
( blank = False 면 필수항목, True 면 선택항목 )
데이터베이스의 변경 내역을 저장시키는 단순한 파일이다.
테이블을 생성하거나 index를 부여하는 등의 코드들이 들어가있다.
우리는 위와 같이 클래스를 정의하고 이를 데이터베이스로 만들기 위해서는 반드시 아래와 같은 migration 생성 명령어
를 사용해야 한다.
python manage.py makemigrations
명령어 뒤쪽에 app의 이름을 넣어주면 그 app에 대해서만 migration을 생성하며 생략시 모든 app에 migration을 생성하게 된다.
위 명령어를 쳤다면 현재 APP폴더 안에 migration 폴더가 생성되었음을 확인할 수 있다.
하지만 마이그레이션을 생성만한다고 테이블이 만들어지는 것은 아니다.
migration을 적용하는 명령어
를 또 쳐주어야 한다.
python manage.py migrate
마이그레이션을 적용하며 DB에 변경사항을 적용하는 명령어이다.
이 명령어를 수행해야만 비로소 DB가 변경된다.
우리가 만든 테이블을 GUI로 확인하기 위해서는 관리자 페이지를 등록해주어야 한다.
해당 APP의 admin.py에서 작업한다.
from django.contrib import admin
from .models import Board
# Register your models here.
admin.site.register(Board)
위와 같이 코드를 쳐주면 관리자 페이지가 등록된다!
이 admin.py 는 사용자가 관리자 페이지를 커스텀하기 위한 파일이다.
ORM으로 관리되는 테이블을 관리자 페이지에 표시하여 GUI로 테이블을 관리
할 수 있다!
이제 서버를 실행하여 관리자 페이지에 들어가면
Board 테이블을 확인할 수 있다^^