[Django 공식문서 번역] Models - 1. 기본


이 글은 본인이 공부를 목적으로 공식문서를 읽으며 정리/번역한 글로서 오역이 있을 수 있을 수 있습니다. 또한 본인이 이미 알고 있거나 불필요하다 느끼는 내용들은 누락될 수 있습니다.

Models

보통 각각의 model은 데이터베이스 테이블 하나와 매칭된다.

기본:
- 모든 model은 python 클래스 django.db.models.Model의 하위클래스이다.
- model의 attribute은 데이터베이스의 field를 나타낸다

아래의 예시는 first_name, last_name이라는 field를 가지는 Person이라는 테이블을 정의한다.


from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
위의 코드는 아래의 SQL과 같다


CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);
알아두면 좋은점:
- 보면 python에서는 Person이라고 정의를 하였지만 SQL에서는 myapp_person이라고 생성되는데, 이는 model metadata에 기반하여 자동 생성된 것이며 덮어씌워질 수 있다.
- id 필드는 자동으로 생성되며 이 행동 또한 덮어씌워질 수 있다.

model 사용하기
model을 변경하거나 추가하면 해당 model이 포함된 app을 INSTALLED_APPS에 추가해야된다. 이러한 경우 꼭 manage.py migrate을 실행하여야 한다.

Field의 종류 <바로가기>

Field의 옵션
- null : Django가 empty값들을 null로 저장한다 (Default: False)
- blank: blank를 허용한다. 여기서 null은 DB에서의 요구사항이고 blank는 django의 validation에 영향을 미치는 파라미터이다 (Default: False)
- choices: 2개로 구성된 tuple의 연속으로 구성되어 있으며 form에서 사용되면 textbox가 나오는것이 아니라 선택박스가 표출된다.
- default
- primary_key: 따로 명시되지 않는다면 django가 자동으로 integer field를 생성하여 primary key로 사용한다. primary key는 읽기 전용이기때문에 primary key를 임의로 변경하여 저장하는 경우 새로운 값이 생성된다.
- unique

댓글

이 블로그의 인기 게시물

[Django 공식문서 번역] REST Framework - Viewset and Router

[Django REST Framework] create() vs perform_create()

Intel Open WebRTC Toolkit(OWT) Media server 설치하는법