[Series1. DashBoard 만들기] - 3. Model 만들기

django_apps·2021년 9월 15일
0

django apps

목록 보기
3/17

DashBoard Model 생성하기

본 포스팅에서는 DashBoard 개발에 필요한 정보를 구성하는 Model을 생성해보도록 한다.

django 에서 Model이란 데이터를 제공하는 Layer라고 보면 된다. django의 Model은 각 앱안에 기본적으로 생성되는 models.py 모듈 안에 정의하게 된다.

하나 이상의 Model(클래스)를 정의할 수 있으며 django에서 한개의 Model 클래스는 DB에서 한개의 테이블과 같다고 보면 된다.

그렇다면, DashBoard에 필요한 데이터는 무엇이 있을까?
아무리 간단하게 개발한다고 하더라도 아래의 데이터는 필요할 것이다.

  • 제목
  • 글 본문
  • 작성자 (django 에 이미 유저정보는 관리되고 있기 때문에 따로 Model에 넣지는 않을 것임. 다음 포스팅에서 자세하게 다룰 예정.)
  • 작성일

위 데이터를 django 안에서 DB에 연계하여 저장, 조회할 수 있어야 할 것이다.
그러기 위해서 django 의 Model이란 개념이 나오는 것이다.

자, 이제부터 DashBoard에 게시할 게시글(Post) Model을 만들어 보자.

velog_series_01/dashboard/dashboard_core/models.py 파일을 코드에디터로 열고 아래와 같이 코드를 작성하자.

from django.db import models
from django.contrib.auth.models import User

# Create your models here.

# DashBoard 게시글 Model을 정의한다
class Post(models.Model):
  title = models.CharField(max_length=60)
  contents = models.TextField()
  created_at = models.DateTimeField(auto_now_add=True)

작성후, 전체저장을 한뒤에 Model을 DB에 넣어 django 와 연동할 수 있도록 한다. 이 작업을 migrate 해준다고 정의한다.

migrate 작업은 아래 2가지 커맨드를 실행함으로써 이루어진다.

  1. migration 파일을 생성한다.
python manage.py makemigrations

  1. migrate 작업을 실행한다.
python manage.py migrate

문제 없이 OK 로그가 찍혔다면, 성공적으로 migrate 가 끝난 것이다.

그럼 어떻게 DB와 연계되어있는지 상세정보를 알아보자.
방금 전에 생성했던 migration 파일(velog_series_01/dashboard/dashboard_core/migrations/0001_initial.py __init__.py) 을 열어보자.

우리가 Model 설정파일에서 간략하게 작성했던 DB 스키마 사양을 확인할 수 있다.

자, 그렇다면 방금 전에 실행했던 migration 작업으로 인하여, 정말 물리 DB가 생성되었을까?

직접 확인해보자. django 는 프로젝트와 바로 연결되어있는 물리 DB에 접속하기 위하여 별도 커맨드가 포함되어 있다.

프로젝트 폴더에서, 아래 커맨드를 실행한다.

python manage.py dbshell

Default DBMS인 sqlite 로 접속되었음을 알 수 있다.

이제 Model이 물리 DB의 Table로 생성되었는지 아래 커맨드로 확인해보자.

.tables

현재 우리의 DashBoard django 프로젝트에 관련된 물리 Table 목록이 표시된다.

당연히, 방금 우리가 작성했던 post Table도 존재함을 알 수있다!

아래 커맨드로 Table의 컬럼 구조도 확인하자.

pragma table_info("dashboard_core_post");

post Model에 대해서 DB 물리 Table 역시, 잘 만들어졌음을 알 수 있다.

이것으로, 오늘은 django Model 구조와 생성, DB와의 연계작업까지 간단하게 알아보았다.

다음에는 이어서 User 정보를 django 에서는 어떻게 관리해야 하는지 포스팅 하도록 하겠다.

그럼 다음 포스팅에서 계속 ~

Thank you!

profile
django developer

0개의 댓글