∟Framework/∟Django

Django - Model

최 수빈 2025. 1. 14. 15:25

 

 

Django - Model

 

데이터베이스의 구조(layout)와 데이터를 조작하기 위한 필드 및 동작을 포함

models.Model을 상속받아 사용하며, 보통 하나의 Model은 하나의 데이터베이스 테이블에 대응

 

 

Database(데이터베이스): 잘 정리된 데이터의 집합

Query(쿼리): 데이터베이스 조작을 위한 언어

Schema(스키마): 데이터베이스의 구조와 데이터 간의 관계를 정의한 설계도

Table(테이블): 데이터를 저장하는 조직화된 집합 (열: 속성/필드, 행: 데이터/레코드/튜플)

Primary Key(PK): 각 테이블의 각 데이터를 유일하게 식별하는 열

 

→데이터베이스를 Django의 Model을 사용해서 구조화하고 조작!

 

 

 

 

Django Model 생성하기

 

앱 내 models.py 파일에서 테이블 정의

model은 보통 클래스로 정의

 

 

 

필드 타입

 

Django모델에서 각 데이터 필드(컬럼)에 저장될 데이터의 형식 정의

  • CharField : 문자열
  • EmailField : 이메일 형식
  • AutoField : 자동으로 증가하는 정수
  • DateTimeField : 날짜/시간
  • FloatField : 부동소수점

 

Django Field types

 

Model field reference | Django documentation

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

 

 

 

생성일 및 수정일 필드 자동 관리

 

 생성일: auto_now_add=True

객체가 최초로 생성될 때 해당 필드에 현재 날짜와 시간을 자동으로 저장

이후 객체가 수정될 때는 값이 변경되지 않음 => 데이터가 처음 저장된 시간을 기록할 때 사용

 

 수정일: auto_now=True

객체가 저장될 때마다(생성 또는 수정 시) 해당 필드에 현재 날짜와 시간을 자동으로 저장

데이터가 마지막으로 수정된 시간을 기록할 때 사용

 

 

 

마이그레이션(Migration)

 

Python 코드로 정의된 Model을 데이터베이스에 반영하는 단계

 

 

1. 마이그레이션 파일 생성

python manage.py makemigrations

 

 

Model의 변경사항을 반영하는 파일 생성

 

 

2. 마이그레이션 적용

python manage.py migrate

 

생성된 마이그레이션 파일을 데이터베이스에 반영

 

 

 

 

마이그레이션 목록 확인

python manage.py showmigrations

 

  • 각 앱에 대해 Django가 추적하는 마이그레이션 파일 목록이 표시
  • [X] : 해당 마이그레이션 파일이 데이터베이스에 적용됨
  • [   ] : 해당 마이그레이션 파일이 데이터베이스에 적용되지 않음
  • (no migrations) : 마이그레이션 파일이 아직 생성되지 않았다는 의미 (모델을 정의했지만 python manage.py makemigraions 명령어를 실행하지 않은 상태 포함)

 

 

SQL 문 확인

python manage.py sqlmigrate app_name migration_no

 

 

 

 

데이터베이스 관리 및 확인

  • SQLite 기본 사용 (개발 단계에서 유용)
  • VSCode 설정
    1. SQLite확장
    2. (MacOS) command+shift+p > SQLite: Open Database
    3. slqite3 파일 열기
  • 대체 도구 : DBeaver, DB Browser 등

 

VSCode - SQLite 확장
(MacOS)  command+shift+p > SQLite: Open Database
db.sqlite3 파일 열기
articles/migrations의 .py파일들 + SQLITE EXPLORER

 


중요

  1. 모델 수정 후 마이그레이션 생성 및 반영 필요
  2. 기존 데이터가 있는 경우 기본값 설정 요구
    • 기본값을 코드에서 지정하거나 새 값을 입력해야 함
    • 메시지를 읽고 옵션 선택

 

 

Django Migrations

 

Migrations | Django documentation

The web framework for perfectionists with deadlines.

docs.djangoproject.com