Model을 통한 DB(데이터베이스)관리
DB의 테이블을 정의하고 데이터를 조작(생성, 수정, 삭제)할 수 있는 기능들을 제공
→ 테이블 구조를 설계하는 청사진(blueprint)
📎 모델과 데이터베이스를 같은 걸로 생각하면 안됨!!
<클래스 2개>
- CharField 클래스의 인스턴스인 title
- Textfield 클래스의 인스턴스인 content
- title, content는 인스턴스이자 클래스 변수가 된다.
📎 모델 클래스 == 테이블 설계도
django.db.models 모듈의 Model이라는 부모 클래스를 상속받음
- Models은 model에 관련된 모든 코드가 이미 작성 되어있는 클래스
- 개발자는 가장 중요한 테이블 구조를 어떻게 설계할지에 대한 코드만 작성하도록 하기 위한 것 (프레임워크의 이점)
- 클래스 변수명 = 테이블의 각 '필드(열) 이름'
- 행 = 레코드라고 함
- model Field 클래스 : 테이블 필드의 '데이터 타입'을 의미함
- model Field 클래스의 키워드 인자(필드 옵션) -> 테이블 필드의 '제약조건'관련 설정
model Field 클래스의 키워드 인자(필드 옵션)
- 테이블 필드의 '제약조건' 관련 설정
데이터가 올바르게 저장되고 관리되도록 하기 위한 규칙
ex) 숫자만 저장되도록, 문자 100자 까지만 저장되도록 하는 등
model 클래스의 변경사항(필드 생성, 수정 삭제 등)을 DB에 최종 반영하는 방법
migrations 과정 |
---|
$ python manage.py makemingrations
# model class를 기반으로 최종 설계도(migration) 작성
$ python manage.py migrate
# 최종 설계도를 DB에 전달하여 반영
이미 생성된 테이블에 필드를 추가해야 한다면?
추가하는 필드의 기본 값을 입력해야 하는 상황
migration 과정 종료 후에 2번째 migration 파일이 생성됨을 확인함
이처럼 Django는 설계도를 쌓아가면서 추후 문제가 생겼을 시 복구하거나 되돌릴 수 있도록 한다(마치 'git commit')
migrate 한 후 테이블 필드 변화 확인하기
model class에 변경사항이 생겼다면(
model class 변경
) 반드시 새로운 설계도를 생성(makemigrations
)하고, 이를 DB에 반영(migrate
)해야 한다.
DB 테이블의 필드(열)을 정의하며, 해당 필드에 저장되는 데이터 타입과 제약조건을 정의
auto_now
: 데이터가 저장될 때마다 자동으로 현재 날짜시간을 저장auto_now_add
: 데이터가 처음 생성될 때만 자동으로 현재 날짜시간을 저장Django는 추가 설치 및 설정 없이 자동으로 관리자 인터페이스를 제공
-> 데이터 확인 및 테스트 등을 진행하는 데 매우 유용
$ python manage.py createsuperuser
$ python manage.py showmigrations
[X]
표시가 있으면 완료되었음을 의미$ python manage.py sqlmigrate articles 0001
데이터베이스 관리 시스템 중 하나이며 Django의 기본 데이터베이스로 사용됨 |
(파일로 존재하며 가볍고 호환성이 좋음) |
소프트웨어가 가지는 기본적인 데이터 처리 기능