다음과 같은 장고 명령어를 자주 봤을 것이다.
$ python manage.py makemigrations $ python manage.py migrate
하다가 막히면 궁금한 점을 찾기 위해 장고 튜토리얼
을 보고 구글검색을 진행하는 편이다. 장고 튜토리얼의 내용을 보자.(영문버전)
The makemigrations command looks at all your available models
and creates migrations for whichever tables don’t already exist.
$ python manage.py makemigrations polls
Migrations for 'polls':
polls/migrations/0001_initial.py
- Create model Choice
- Create model Question
- Add field question to choice
(참고) 장고에서 Field(필드)란, DB 테이블에서 열(column)을 의미한다. 장고에서 필드
는 모델을 생성할 때 반드시 필요한 요소로써, 모델클래스의 속성으로 나타낸다.
(추가설명) 라이브러리와 웹프레임워크의 차이 중 하나는, 함수 및 클래스의 호출을 누가 하느냐에 있다. BeautifulSoup모듈의 soup는 우리가 직접 호출해야 했다. 웹 프레임워크에서는 django
가 사용자 정의 클래스 등을 호출한다.
예를 들어,
full_name = models.CharField(70)
에서 full_name은 필드 클래스의 객체다.
models는 django 패키지에서 알 수 있듯이 패키지다.
CharField는 필드의 타입을 정의하는 클래스다.
필드이름들이 DB에서 Column이 되는 것이다.
(참고로, 필드이름에 __
언더스코어 두 개를 연속하여 사용할 수 없다. Query syntax와 충돌이 일어나기 때문이다.)
migrate runs the migrations and creates tables in your database, as well as optionally providing much richer schema control.
Migrations are Django's way of propagating changes you make to your models (adding a field, deleting a model, etc.) into your database schema. They're designed to be mostly automatic, but you'll need to know when to make migrations, when to run them, and the common problems you might run into.
- 조건 : makemigrations를 한 이후에 진행
- 결과 : 비로소 DB에 저장
- 핵심 :
(참고) 스키마
스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다. (명세서라는 컨셉을 이해하자)