우리는 데이터의 테이블을 하나의 model로 만들어주기만 하면
장고가 테이블도 생성해주고 기타 일을 해준다.
기본적으로 장고는 sqlite db를 사용한다. 나중에 다른 db와 연동하는 것도 공부하여 포스팅할 것이다.
지금은 장고의 모델 개념을 익히는데 집중을 할 것이다.
mange.py의 migrate 명령은 현재 db에서 수정된 부분을 적용시켜주는 역할을 한다. 모델을 확인하고 모델이 수정된 부분이 있으면 그거에 맞춰서 db를 적용시켜준다.
(초기 migrate)
우리는 아무 모델도 만들지 않고 그랬는데 뭘 적용하는거지?
장고는 기본적인 db 파일들이 있다. 관리자 정보, 인증 정보 세션정보 등등이 있다. 기본적인 db 정보들을 db에 필요하면 테이블도 만들고 알아서 적용시켜준다.
그렇다면 우리가 모델을 한번 직접 만들고 확인해보자.
지난 포스팅에서 우리는 polls 이라는 투표 APP 을 생성했다. 그렇다면 여기에 필요한 DB 테이블이 무엇일까?
기본적으로 질문들을 저장하는 테이블이 필요할 테고, 해당 질문에 대한 선택지들에 대한 테이블이 필요할 것이다.
그렇다면 Question과 Choice 모델을 2개 만들어보자.
(Question, Choice)
기본적으로 model의 속성 필드가 있다.
CharField는 문자열이 저장되는 필드
DateTimeField는 날짜 정보가 저장될 수 있는 필드
IntegerField는 정수가 저장되는 필드
등등 있다. 이는 JSP나 다른 웹프로그래밍에서 DB를 생성해보았다면 이해하기 쉬울 것이다. 뒤 인자들도 쉽게 이해할 수 있을 것이다.
다만 다른점중 하나는 첫번째 인자를 선택하에 사람이 읽기 좋은 필등명으로 설정해줄 수 있다.
여기서는 pub_date를 보자. 여기서 필드를 생성할 때 첫번째 인자가 date published 라는 문자열로 설정되어있다. 우리는 해당 필드를 date published 라고 설정한 것이다.
그렇다면 이렇게 모델을 생성해주고 무엇을 해야하나?
여기서 이제 migrate 명령이 필요하다. 하지만 현재 우리 APP이 프로젝트로 포함되어있지 않다.!
포함시켜보자!
(포함시키기)
INSTALLED_APPS 가 있는데 여기에 추가해야한다.
PollsConfig 클래스는 polls/apps.py 파일에 존재한다. 그러므로 경로는
'polls.apps.PollsConfig' 가 된다. 이 경로를 추가해주면 된다.
이제 migrate를 할 것이다.
우리는 직접 migrate하기전에 makemigrations를 이용해 과정을 살펴볼 것이다.
makemigrations 를 하게되면 변경된 부분을 migrate하기 전에 db를 위한 명령들이 있는 파일들로 만든다.
(makemigration)
이 파일 속에는 sql 쿼리들이 담겨있다.
확인해보면
(sql 쿼리)
migrate!
(migrate)
이제 생성된 DB에 내용을 추가하는 것을 shell을 이용해 추가해볼 것이다.
(쉘 실행)
그 후 모델을 생성해준다.
(모델 생성)
q에 Question 객체를 생성했다. 확인해보자.
(Question 객체 확인)
save() 명령을 통해 DB에 저장할 수 있다.
객체를 확인해보자.
(객체 확인)
우리가 알아볼 수 없다. 객체를 우리가 알아볼 수 있는 문자열로 보이게 하기 위해 조치를 취할 것이다.
이건 단순히 우리가 쉘에서 보기 편하게 하기 위해서가 아닌 나중에 관리자 페이지에서 해당 DB를 관리할 때 보기 편하게 하기 위해서이다.
(추가 내용)
Question 모델에 메서드를 하나 추가해보자.
(메서드 추가)
그리고 다시 쉘을 실행한다.
(확인)
그리고 추가한 메서드도 확인해본다.
(추가 메서드 확인)
그렇다면 해당 질문에 선택지를 추가하고 마무리 하겠다.!
(선택지 추가)
선택지를 추가하였다.
( *참조 - https://docs.djangoproject.com/ko/2.0/intro/tutorial02/)
'Web > Django Project' 카테고리의 다른 글
Django Tutorial - Form 만들기, 제네릭뷰 사용 (0) | 2018.02.06 |
---|---|
Django Tutorial - Views ( Template와 연결 ) (0) | 2018.02.01 |
Django Tutorial - 관리자 생성 및 페이지보기 (0) | 2018.01.31 |
Django Tutorial - APP 생성 (0) | 2018.01.31 |
Django 시작하기(설치, 서버실행) (0) | 2018.01.26 |