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 : 부동소수점
생성일 및 수정일 필드 자동 관리
• 생성일: 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 등
중요
- 모델 수정 후 마이그레이션 생성 및 반영 필요
- 기존 데이터가 있는 경우 기본값 설정 요구
• 기본값을 코드에서 지정하거나 새 값을 입력해야 함
• 메시지를 읽고 옵션 선택
'∟Framework > ∟Django' 카테고리의 다른 글
Django - MTV패턴을 활용한 C(Create)와 R(Read) 구현 (0) | 2025.01.18 |
---|---|
Django - ORM(Object-Relational Mapping) (1) | 2025.01.14 |
Django - URLs (0) | 2025.01.14 |
Django - HTTP Form (0) | 2025.01.12 |
Django - Template System/ Django Template Language(DTL) (2) | 2025.01.10 |