당신은 멋쟁이, 우리는 장고쟁이~

0%

Django Models 1편 - Quick Example

Models - Quick example


Django 공식문서에 나와있는, models 에 대한 부분을 둘러봅니다.


공식 문서에는 완벽한 번역본이 존재하지 않고, 설명이 너무 불충분해서, 초반에 공부할때에 많은 어려움이 있었습니다.

물론,, 지금도 쉽지는 않지만.. 어쨋든, Django models 에 대한 포스팅을 시작합니다.



Models (모델)

모델은 당신의 데이터에 대한 정보를 가지고 있고, 당신의 데이터에 대한 정의를 내리는 하나의 소스 입니다.

모델은 당신에게 필요하고 저장하고자 하는 필드들과 동작들에 대한 정보를 포함하고 있습니다

각 모델들은, 보통 하나의 데이터 베이스 테이블로 매핑 됩니다.



기본 사항들


  1. 각 모델은 Python 클래스 이고, django.db.models.Model 의 서브 클래스 이다
  2. 각 모델의 속성들은 데이터베이스 필드를 표현 합니다
  3. 이 모든 정보들을 가지고, Django 는 자동으로 생성된 database-access API 를 제공합니다.


빠른 예제


아래 예제는, first_name, last_name 정보를 가지는 Person 모델을 정의 합니다.


1
2
3
4
5
6
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 은 모델의 필드들입니다. 각 필드들은, 클래스의 속성들로 표현되어 있습니다.


그리고, 각 속성들은 database 컬럼들과 메칭 됩니다.


처음에 공부할때, 데이터베이스의 Column 그리고 Field 에 대해서 잘 몰라서

이해가 안갔었는데, 아래 그림을 가져와서 참고 합니다.



  • 위의 모델에서 class Person 이라는 클래스는 데이터베이스 테이블명이 됩니다
  • first_name 은 해당 테이블의 필드명이 되고, 최대 길이는 30자 입니다
  • last_name 은 해당 테이블의 필드명이 되고, 최대 길이는 30자 입니다

위의 Person 모델은 아래와 같은 데이터베이스 테이블을 생성합니다.


1
2
3
4
5
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 필드는 자동으로 추가됩니다. 이 동작 방식도 수정될수는 있습니다
  • 이번 예제에서 사용된 CREATE TABLE SQL 구문은, PostgreSQL 구문을 사용한 형식입니다. 하지만, django 는 데이터베이스 백앤드를 당신의 settings.py 파일에 명시되어 있는 데이터베이스에 맞추어 사용합니다.