Django에서 Model의 기본적인 사용법

2020. 8. 10. 19:07개발을 파헤치다/Django

반응형

Django에서 Model이란?

 

Django를 이용해서 개발을 진행할 때 개념적인 부분을 정확히 이해해야

제대로 된 개발이 가능합니다.

 

Django같은 Framework는 다 탄생배경이 있으며 어떤 목적을 위해 만들어졌기 때문이죠

그래서 이런 부분을 알아야 내 상황과 프로젝트 특징에 따라서 가장 효율적인 선택을 할 수 있습니다.

 

Model은 여러분의 웹어플리케이션을 구성하는 하나의 데이터 단위를 의미하는데요.

예를 들어, 쇼핑몰 웹사이트를 만든다고 한다면 아래와 같은 데이터들이 필요하겠죠

 

  • 회원정보

  • 물품정보

  • 브랜드 종류

  • 장바구니 정보

  • etc...
 
이렇게 어플리케이션이 원활하게 돌아가는데 필요한 데이터들이 있는데요.
이것들을 정의하는 것 역시 개바자의 몫입니다. 
저는 이런 점 때문에 개발을 참 좋아하는데요! 하나부터 열까지 제 손과 제 생각에서 작품이 탄생하기 때문에 다 만들었을 때의 희열이 있죠! (여담이 너무 길어졌네요...)
 
Django에서 Model을 정의하는 방법
 
이 Model들은 데이터베이스 상의 테이블에 해당되는데요. Django와 같이 Full-Stack Framework를 사용하게 되면 데이터베이스에 SQL문으로 직접 테이블들을 설계하기 보다는 ORM(Object-relational Mapping)이라는 것을 통해 설계합니다.
 
이것을 쓰는 장점은 데이터베이스를 OOP(Object Oriented Programming)에 따라 설계할 수 있을 뿐 아니라 DB가 바뀌더라도 ORM에서 알아서 해당 데이터베이스에 맞는 SQL문으로 테이블과 관계들을 만들어 주기 때문이죠!
 
또한, 데이터를 객체화 할 수 있으면 유지 보수면에서도 효율적이고 쓸데 없는 코드를 줄일 수도 있습니다.
 
Model을 구현하기 위해서는 먼저 어플리케이션 디렉토리내 models.py를 오픈합니다.
 
 
$ vi [application root directory]/models.py
 
Person이라는 모델을 클래스 형식으로 구현합니다.

Model 클래스를 상속하는 것에 주의합니다.
from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
위의 모델을 구현하면 데이터베이스에는 아래와 같은 명령이 실행됩니다.
CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);

모델을 구현 후, 실제로 데이터베이스에 적용하기 위해서는 마이그레이션을 수행해야합니다.
$ python manage.py migrate
데이터베이스에 myapp_Person 테이블이 생성된 것을 확인할 수 있습니다.
 
 

 

반응형