Migrations

뚝딱뚝딱·2023년 9월 17일
1

Django

목록 보기
5/13
post-thumbnail

Migrations

model 클래스의 변경사항(필드 생성, 수정, 삭제 등)을 DB에 최종 반영하는 방법

Migrations 과정

Migrations 과정

Migrations 핵심 명령어 2가지

model class를 기반으로 최종 설계도(migration) 작성
최종 설계도를 DB에 전달하여 반영
  • 첫 migrate시 출력 내용이 많은 이유는?
    • Django 프로젝트가 동작하기 위해 미리 작성되어있는 기본 내장 app들에 대한 migration 파일들이 함께 migrate 되기 때문
테이블 작성

추가 Migrations

추가 모델 필드 작성

  • 이미 기존 테이블이 존재하기 때문에 필드를 추가 할 때 필드의 기본 값 설정이 필요
  • 1번은 현재 대화를 유지하면서 직접 기본 값을 입력하는 방법
  • 2번은 현재 대화에서 나간 후 models.py에 기본 값 관련 설정을 하는 방법
  • 추가하는 필드의 기본 값을 입력해야 하는 상황
  • 날짜 데이터기 때문에 직접 입력하기 보다 Django가 제안하는 기본 값을 사용하는 것을 권장
  • 아무것도 입력하지 않고 enter를 누르면 Django가 제안하는 기본 값으로 설정됨
  • migrations 과정 종료 후 2번째 migration 파일이 생성됨을 확인
  • 이처럼 Django는 설계도를 쌓아가면서 추후 문제가 생겼을 시 복구하거나 되돌릴 수 있도록 함( 마치 ‘git commit’)

📎 model class 에 변경사항이 생겼다면, 반드시 새로운 설계도를 생성하고 이를 DB에 반영해야 한다.
  1. model class 변경 → 2. makemigrations → 3. migrate

Model Field

DB테이블의 필드(열)을 정의하며, 해당 필드에 저장되는 데이터 타입과 제약 조건을 정의

  • Charfield() : 길이의 제한이 있는 문자열을 넣을 때 사용(필드의 최대 길이를 결정하는 max_length는 필수 인자)
  • Textfield() : 글자의 수가 많을 때 사용
  • DateTimeField() : 날짜와 시간을 넣을 때 사용
  • DateTimeField 의 선택인자 ( 시험에 내기 좋겠죠?? 잘 기억해 두세요 장난치기 좋겠쬬??)
    • auto_now : 데이터가 저장될 때마다 자동으로 현재 날짜,시간을 저장(수정일)
    • auto_now_add : 데이터가 처음 생성될 때만 자동으로 현재 날짜,시간을 저장(작성일)
profile
나의 행복 만들기

0개의 댓글