1. 모델(Model)
2. 마이그레이션(Migration)
1. 모델(Model): 저장할 데이터에 대한 필드와 동작들을 포함한 데이터베이스 구조 (layout)
- Django는 Model을 이용해서 데이터를 조작
- 일반적으로 하나의 Model은 하나의 데이터베이스 테이블을 의미
Model 작성해보기
- models.py
from django.db import models
class Article(models.Model):
pass
- models.Model을 상속받아서 사용하고자 하는 데이터 스키마를 정의합니다.
- 모든 모델은 models.Model의 서브 클래스로 표현합니다.
- 필드 추가하기
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=50)
content = models.TextField()
- 각각의 필드는 테이블의 컬럼입니다.
- 필드의 타입에 따라 사용하며, 각 필드별로 필요한 옵션들이 존재합니다.
- 공식문서 참고 (Django Fields Types)
2. 마이그레이션(Migration): Django는 마이그레이션(migration)을 만들고 이 단위로 데이터베이스에 변경사항을 반영
- 현재 Python으로 Model 코드는 작성했지만 데이터베이스에는 반영이 안된 상태
마이그레이션 관련 명령어
⭐ model에 생긴 변경사항을 마이그레이션으로 만드는 코드
python manage.py makemigrations
⭐ 마이그레이션을 실제로 데이터에 반영해서 동기화 하는 코드
python manage.py migrate
- 마이그레이션 목록과 적용여부를 보여주는 명령어
python manage.py showmigration
- 해당 마이그레이션이 어떤 sql문을 작성했는지 보여주는 명령어
python manage.py sqlmigrate <app_name> <migration_no>
마이그레이션 적용하기
- Model 변경사항을 마이그레이션으로 생성
→ 데이터베이스 수준에서 변경이 필요한 사항
- 마이그레이션을 반영
- 내가 열고 싶은 데이터베이스 파일을 선택
- 현재 내가 가지고 있는 테이블 목록들
많이 쓰는 필드
생성일과 수정일
⇒ 생성일은 그냥 딱 알아서 데이터 들어와서 새로 생성되면 그때 날짜시간 넣어주고,
⇒ 수정일은 그냥 딱딱 알아서 데이터 수정되면 그때 날짜시간 반영을 해주기 위해서
- auto_now_add=True & auto_now=True 사용하기
방금 Model을 수정→ 모델을 수정했으니 마이그레이션 생성하고, 반영
기존에 생성한 데이터들은 어떻게 하겠냐고 물음
- 값하나를 주면 그 값을 다 넣는 방식
- 일단 종료하고 model로 돌아가서 기본값 설정하는 방식
1번 선택
→ 값을 따로 입력하지 않아도 Enter만 치면 지금 시간을 계산해서 넣어주거나 아니면 값을 따로 입력하라고 함
'Django' 카테고리의 다른 글
Django MTV 사용하기(CR, DB 조회 역순, CSRF) (0) | 2024.08.14 |
---|---|
ORM(Django) (0) | 2024.08.14 |
url 변수, 앱 분리, Naming URL Patterns(장고) (0) | 2024.08.13 |
Django GET 메서드 기초 (0) | 2024.08.12 |
Django Template System 기초 (0) | 2024.08.09 |