<!doctype html>
한국어로 옮기기 어색한 단어들은 영문으로 혹은 해석이 애매한 구절은 직역한 그대로 사용 하였습니다.
모델
모델은 당신의 데이터에 대해서 단 하나의 정보이다. 이것은 필수적인 필드들과 당신이 저장하는 데이터의 행동들을 포함한다. 대개 각각 모델은 1개의 데이터베이스 테이블에 매핑된다.
기본적으로
- 각각의 모델은 파이썬 클래스 이다 - 이 클래스는
django.db.models.Model
의 서브 클래스이다. - 각각의 모델의 속성은 데이터베이스의 필드를 나타낸다.
- 위의 두가지와 함께, 장고는 자동으로 생성된 데이터베이스 접근 API를 제공한다; 쿼리 만들기를 보자
내 마음대로 해설
장고로 개발 하다보면 모델은 무조건 적으로 만나게 되는 놈이다. 설명에 나온대로, 데이터베이스 테이블을 파이썬의 클래스와 매핑 시켜서 표현하고, 데이터베이스를 지지고볶고 할 수 있는 API로써, 장고 ORM을 제공한다
빠른 예제
이 예제의 모델은 Person
을 정의한다 - 이 Person
은 first_name
과 last_name
을 가진다
x
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
first_name
과 last_name
은 모델의 필드들이다. 각각의 필드는 클래스 속성으로 특정되고, 각각의 속성은 데이터베이스 컬럼과 매핑된다.
위의 Person Model은 아마도 다음과 같은 데이터베이스 테이블을 생성 할 것이다.
CREATE TABLE myapp_person (
"id" serial NOT NULL PRIMARY KEY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
)
몇가지 기술적인 메모:
- 테이블의 이름인
myapp_person
은 모델의 메타데이터로 부터 자동적으로 만들어진다. 이 테이블 이름은 재정의할 수 있다. 자세한 내용은 테이블 이름 을 보자 id
필드는 자동으로 추가된다 그러나 이 동작은 재정의 할 수 있다. Automatic primary key 필드를 보자- 위 예제 속
CREATE TABLE
SQL은 PostgreSQL 문법을 사용하여 보여진다. 그러나 꼭 PostgreSQL이 아니더라도 장고는 settings file의 database backend에서 정의된 것에 맞춰서 SQL을 사용한다
내 마음대로 해설
매우 간단한 모델을 생성하였고, 해당 클래스를 통해 데이터베이스 내 테이블을 생성할 때, 어떤 쿼리가 나가는지도 설명하였다.
참고로 내가 만드는 모델 클래스가 실제로 어떤 데이터베이스 쿼리를 발생시키는지 보고 싶을 때는 아래와 같이 해준다.
x
python manage.py sqlmigrate [app_name] [마이그레이션 번호]
(py38) ➜ src >> python manage.py sqlmigrate thkwon_lab 0001
BEGIN;
--
-- Create model Person
--
CREATE TABLE "thkwon_lab_person" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL);
COMMIT;
모델 사용하기
일단 당신의 모델을 정의하면 당신은 장고에게 이 모델을 사용할 것을 말해야한다 settings.py
의 INSTALLED_APPS
에 당신의 models.py
를 포함하는 모듈의 이름을 추가해라.
예를들면, 만약 당신의 모델이 myapp.models에 있다면, INSTALLED_APPS 읽어야 한다
xxxxxxxxxx
INSTALLED_APPS = [
#...
'myapp',
#...
]
새로운 앱을 INSTALLED_APPS
에 추가할 때, 반드시 mange.py migrate
를 해주어라 처음으로 migration
을 만드는 것이라면 manage.py makemigrations
도 같이 해주어야 한다.
내 마음대로 해설
위 설명대로, 장고 모델을 사용하기위해선 앱등록을 해주어야 한다. 앱등록은
INSTALLED_APPS
에 추가를 하면된다.그 이후에는
makemigrations
와migrate
를 해준다.
makemigrations
는 DB migration할 정보를 보여주는migration
파일을 생성한다.
migrate
는 이migration
파일을 바탕으로 실제 DB에 반영 시킨다.
'개발 > 장고' 카테고리의 다른 글
[해설과 함께 읽는 Django 문서] Models - 다 대 다 관계 (0) | 2021.01.29 |
---|---|
[해설과 함께 읽는 Django 문서] Models - 다 대 일 관계 (0) | 2021.01.27 |
[해설과 함께 읽는 Django 문서] Models - Verbose Field 이름 (0) | 2021.01.24 |
[해설과 함께 읽는 Django 문서] Models - Automatic primary key 필드 (0) | 2021.01.24 |
[해설과 함께 읽는 Django 문서] Models - 필드옵션 (0) | 2021.01.23 |