Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- 플로이드워셜
- db
- js
- SSAFY
- Javascript
- PWA
- SQL
- 알고리즘
- git
- pwa적용하기
- react
- 싸피10기
- 14658
- 싸피셜
- 싸피
- vitepwa
- queryset
- TypeScript
- 백준
- 리액트
- 머신러닝종류
- VITE
- 데코레이터
- SSAFYcial
- QuerySetAPI
- 셀프넘버
- sqld
- Python
- Django
- unionfind
Archives
- Today
- Total
Meme's IT
[Django] Model과 Migrations 본문
# 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 (0) | 2023.09.15 |
---|---|
[Django] Admin Site (0) | 2023.09.14 |
[Django] App URL (0) | 2023.09.14 |
[Django] 변수와 URL (0) | 2023.09.14 |
[Django] form활용: throw & catch (0) | 2023.09.13 |