본문 바로가기
Python/Django Ⅰ

Models 생성

by Mr.DonyStark 2024. 4. 13.

Django 모델(Models)란?

□ 프로젝트에서 애플리케이션(App)을 생성하고, 앱(APP) 기능 별 여러 데이터 값들을 생성, 수정, 삭제, 저장등을 위한 데이터 관리를 위해 테이블 객체를 생성하는데 이를 위한 것이 모델(Models)임.

 그래서 우리는 해당 모델을 사용하여 테이블을 생성하기전에 데이터를 어떻게 처리할지 고민해야함
□ 우리는 프로젝트 생성 후 관리자, 즉, 슈퍼유저(admin)를 만들기위해 기본 테이블이 필요하여 생성전에 유저 데이터들이 저장될 수 있는 테이블을 생성했음.

python manage.py migrate

 

□ 위 코드를 실행하여 프로젝트 생성시 필요한 기본적인 테이블과 앱들을 설치했으며, 설치된 앱들은 모두 환경설정폴더에 모두 저장되었고, 환경설정 폴더는 최상위 폴더의 settings.py임.

프로젝트 폴더 하위의 상위 폴더(프로젝트명과 동일)안에 settings.py 를 확인할 수 있음

□ 모델 생성과정

1 단계 : App 기능을 위한 테이블 논리 모델링
2 단계 : Django 코드 코딩으로 모델(Model) 객체(테이블 클래스) 생성 후 admin.py에 등록[admin.site.register(모델 클래스명)]
3 단계 : 상위 폴더 > settings.py > Installed_apps 부분에 App을 위한 모델 객체 등록
4 단계 : cmd창에서 py manage.py makemigrations *모델과 관련하여 신규 생성, 삭제, 수정작업 시 반드시 진행
5 단계 : 최종 반영을 위해 cmd 창에서 python manage.py migrate 입력

 

 ○ 1 단계 : App 기능을 위한 테이블 논리 모델링

   - onememos app을 생성하였고, 이를 위한 테이블 논리 모델링 실행

원래는 논리모델링 후 테이블정의서 등을 통해 모델링관련 요소를 정의하지만 예제를 위해 스킵.

 

  ○ 2 단계 : Django 코드 코딩으로 모델(Model) 객체(테이블 클래스) 생성 후 admin.py에 등록[admin.site.register(모델 클래스명)]

from django.db import models

class Memo_TB(models.Model):
    memo_text = models.CharField(max_length=250) #문자형 필드 : models.데이터타입, 최대길이 200
    published_date = models.DateTimeField(auto_now_add=True) #날짜형 필드 : models.데이터타입 + 현재 시간이 자동으로 입력되도록 auto_now_add=True 설정

onememos 라는 app > models.py에 논리 모델링을 바탕으로 모델 객체 생성 후 필드 정의

 

    - admin.py 에 모델 등록 : admin.site.register(models 클래스명) *import를 활용해 models.py 불러옴

from django.contrib import admin
#onememos app의 models.py에 생성한 Memo_TB란 테이븍 클랙스 임포트
from onememos.models import Memo_TB 
# Register your models here.
admin.site.register(Memo_TB)

모델객체 생성 후 app > admin.py에 models.py 임포트 후 등록

 

  ○ 3 단계 : 상위 폴더 > settings.py > Installed_apps 부분에 App을 위한 모델 객체 등록  

    - "app명.apps.app명Config"

 

  ○ 4 단계 : cmd창에서 py manage.py makemigrations *모델과 관련하여 신규 생성, 삭제, 수정작업 시 반드시 진행

py manage.py makemigrations

명령어가 실행되면 모델이 생성되었다는 문구가 생성됨

 

  - 위 명령어가 실행되면 app > migrations 폴더에 > 파일이 생성되며 조회화면 아래와 이미지와 같음.

0001_initia.py가 생성되었으며 생성한 모델 객체의 정보가 있음

 

  - 생성된 모델 클래스의 필드관련하여 값 수정 후 똑같이 py manage.py makemigrations 실행하면 변경정보가 출력이됨과 동시에 해당 정보가 저장된 파일이 생성되는 데 이또한 app > migrations 폴더 에 있음.

 

*DB관련 수정을위해 models.py를 작성,수정, 삭제를 진행했다면 작업이 끝난 후  py manage.py makemigrations 명령어 실행 

 

 

  ○ 5 단계 : 최종 반영을 위해 cmd 창에서 python manage.py migrate 입력

python manage.py migrate

위 명령어를 통해 신규생성 및 수정에 대한 정보를 모두 최종반영함

 

□ 최종확인

  ○ 서버구동

python manage.py runserver

 

  ○ admin url 접속

생성한 model 객체를 통해 값을 CRUD 할 수 있는 것을 확인 할 수 있음.