Django

모델 및 마이그레이션

zhelddustmq 2024. 8. 14. 10:16

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>

마이그레이션 적용하기

  1. Model 변경사항을 마이그레이션으로 생성
    → 데이터베이스 수준에서 변경이 필요한 사항
    각각의 앱 별로 migration이 생성
  2. 마이그레이션을 반영
    작성한 articles의 0001_initial 마이그레이션 적용 (빨간색) 나머지는 Django가 여러가지 기능 제공을 위해 생성하는 마이그레이션
  3. 가 열고 싶은 데이터베이스 파일을 선택


  4. 현재 내가 가지고 있는 테이블 목록들

 

 

많이 쓰는 필드

생성일과 수정일

⇒ 생성일은 그냥 딱 알아서 데이터 들어와서 새로 생성되면 그때 날짜시간 넣어주고,

⇒ 수정일은 그냥 딱딱 알아서 데이터 수정되면 그때 날짜시간 반영을 해주기 위해서

  • auto_now_add=True & auto_now=True 사용하기

 

방금 Model을 수정→ 모델을 수정했으니 마이그레이션 생성하고, 반영

기존 데이터는 어떻게 할건가

기존에 생성한 데이터들은 어떻게 하겠냐고 물음

  1. 값하나를 주면 그 값을 다 넣는 방식
  2. 일단 종료하고 model로 돌아가서 기본값 설정하는 방식

1번 선택

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