# Django의 MTV 패턴
- Model: 데이터와 관련된 로직, 데이터베이스(SQLite)를 관리
- Template: 보여지는 부분 (html파일)
- View: Model과 Template와 관련된 로직이 들어가는 곳, 중계자의 역할을 함
그 중, Django의 Model은 DB의 테이블을 정의하고 데이터를 조작하는 등의 기능을 제공한다.
Model Field
DB 테이블의 필드(= 열)을 정의하며, 해당 필드에 저장되는 데이터 타입과 제약조건을 정의한다.
Model Field의 종류
CharField(): 길이 제한이 있는 문자열을 넣을 때 사용(max_length가 필수 인자)TextField(): 글자의 수가 많을 때 사용DateTimeField(): 날짜와 시간을 넣을 때 사용auto_now: 데이터가 저장될 때마다 자동으로 현재 시간을 저장(= 수정)auto_now_add: 데이터가 처음 생성될 때만 자동으로 현재 날짜 시간을 저장(= 작성)
Migrations
model 클래스의 변경사항(필드 생성, 수정)을 DB에 최종 반영하는 방법
설계도 초안(Model)과 DB는 서로 다른 언어를 사용하므로 꼭 해줘야 하는 과정!

- makemigrations: model class를 기반으로 최종 설계도 작성
python manage.py makemigrations
- migrate: 최종 설계도를 DB에 전달하여 반영
python manage.py migrate
직접 해보기
# articles/models.py 위치
from django.db import models
class Article(models.Model):
title = models.CharField(max_length = 10)
content = models.TextField()
클래스의 변수명(title, content)는 테이블의 각 필드(= 열)의 이름이 된다.
- DB에서의 열(column) = 필드 / 행(row) = 레코드
이후, 터미널에
# makemigrations
python manage.py makemigrations
# migrate
python manage.py migrate
두 명령어를 입력해서 migration을 진행


EXPLORER의 db.sqlite3파일 우클릭 > Open Datebase > SQLITE EXPLORER가 생긴걸 확인할 수 있다.

# models의 필드를 더 추가해줄려면?
# models.py 위치에 추가적으로 작성
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=10)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
터미널에서 makemigrations를 진행,
이미 기존 테이블이 존재하기 때문에 추가할 때 필드의 기본 값을 설정해줘야한다.

두개의 옵션 중 하나 선택(1 = 자동 , 2 = 수동)

기본값을 현재 시간으로 할껀지에 대한 옵션 → 그냥 엔터

이후 migrate까지 해주면 완료
SQLITE EXPLORER 를 새로고침해주고 확인하면 추가된 것을 확인할 수 있다.

'BackEnd > Django' 카테고리의 다른 글
| [Django] ORM과 QuerySet API (1) | 2023.09.15 |
|---|---|
| [Django] Admin Site (0) | 2023.09.14 |
| [Django] App URL (0) | 2023.09.14 |
| [Django] 변수와 URL (1) | 2023.09.14 |
| [Django] form활용: throw & catch (1) | 2023.09.13 |