Model
웹 애플리케이션의 데이터를 구조화 하고 조작 하기 위한 도구
- 보통 데이터베이스에 데이터를 저장하고 조회하기 위해서 SQL 쿼리문을 이용해야 하지만 장고의 모델(Model)을 사용하면 이런 SQL 쿼리문의 도움없이 데이터 처리가 가능하다.
- 저장된 데이터베이스의 구조를 나타내며 단일 데이터에 대한 정보를 가진다
- 사용자가 저장하는 데이터들의 필수적인 필드들과 동작을 포함
- 일반적으로 각 model은 하나의 데이터베이스 테이블에 mapping 된다
models.py 작성
DB column(ex. title, content)과 어떠한 타입으로 정의할 것인지에 대해 django.db 모듈의 models 상속
- 각 모델은 django.db.models.Model 클래스의 서브 클래스로 표현
- 각 필드는 클래스 속성으로 지정되며, 각 속성은 데이터베이스의 column에 mapping

model 사용하기
- 데이터 조회
- Article.objects.all()
: QuerySet 객체가 리턴
- Article.obejcts.get(id=1)
: QuertSet이 아닌 Article 모델 객체가 리턴
Migrations
django가 model에 생긴 변화를 반영하는 방법
- 데이터베이스가 필요한 앱만 migration이 필요하다.
-
makemigrations
: DB에 변경이 필요한 사항을 추출
- model 변경 후 새로운 마이그레이션을 만들 때 사용
- model 변경 후 반드시 해 주어야 한다
-
migrate
- 만들어진 마이그레이션을 DB에 반영하기 위해 사용
- model에서 변경 사항과 DB의 스키마가 동기화를 이룸
models.py
$ python manage.py makemigrations
$ python manage.py migrate
ORM
DB 를 객체(object)로 조작하기 위해 ORM을 사용
- Object-Relational-Mapping
- 객체 지향 프로그래밍 언어를 사용, 호환되지 않는 유형의 시스템 간에(Django ~ SQL) 데이터를 변환하는 프로그래밍 기술
- Django는 내장 Django ORM을 사용