티스토리 뷰
우리가 만드는 파일에 대해서 생각해봅시다.
모델 정의하기
위에서 정의한 것들을 직접적인 형태로 바꿔보겠습니다. 우리는 2개의 테이블이 필요합니다. Book과 Wisesaying라는 이름의 테이블입니다. 또 Book에는 name과 author, introduction이라는 컬럼이 있습니다. Wisesaying이라는 테이블에는 book과 text라는 컬럼이 필요합니다.
모델의 전체 소스는 위와 같습니다. 클래스는 model의 Model을 상속받고 컬럼 역할을 하는 속성들은 models의 필드들을 정의해두면 됩니다. 필드에는 날짜, 파일, 이메일, 문자, 숫자, 이미지 등 다양한 필드가 있습니다. 어떤 값을 받아야 하는 지 생각해보시고, 알맞은 필드를 선택하시면 됩니다.
저희가 만들앱에서는 CharField(문자를 받는 필드)와 TextField(긴 텍스트를 받는 필드)를 사용했습니다. 긴 텍스트는 글자수를 조절할 필요 없지만 CharField에는 max_length를 전달해서 최대 글자 수를 조절했습니다.
관계 파악하기
def __str__(self)를 잊지마세요.
str은 사용자가 보기 쉽게 나타내기 위해 정의하는 것입니다. 만약에 정의하지 않는다면 인스턴스(우리가 정의한 클래스의 값)가<object xxxx> 와 같은 형태로 나타날 것입니다. 그러나 str을 정의했기 때문에 책을 저장했을 땐 그 책의 이름으로, 좋은 글귀를 저장했을 때 그 좋은 글귀로 만들어진 데이터를 볼 수 있습니다.
makemigrations와 migrate
세팅할 때 슈퍼유저를 만들기 전에 migrate라는 명령어를 사용한 것이 기억나시나요? 데이터 베이스의 변경이 있으면 사용하는 명령어들이 makemigrations와 migrate입니다. 간단하게는 makemigrations는 변경된 부분을 파악해서 적용할 부분을 정리한다고 생각하시면 됩니다. 앱 밑에 migrations라는 폴더가 있습니다.
python manage.py makemigrations를 입력하면 여기에 파일이 생깁니다.
실제로 적용하는 부분은 migrate 부분입니다. 역할이 나눠져있다고 생각하시면 됩니다.
그렇다면 우리는 왜 맨처음에 migrate를 사용했을까요?
auth를 migrate하면 보여지는 부분
우리가 어드민 페이지에 가서 맨 처음에 사진과 같은 부분을 볼 수 있는 것도 세팅 부분에서 migrate를 했기 때문 입니다. 우리의 모델을 수정한 뒤에는 반드시 makemigrations와 migrate 순서로 실행해주시면 됩니다. 우리가 모델을 정의했으니 잊지말고 입력해주세요.
모델을 정의하면서 가장 많이 들어가는 곳이 어디일까요? 바로 admin.py 입니다. 정의한 모델을 어드민 페이지에서 나타내야하기 때문입니다. 다음 포스팅에서는 어드민 파일을 다루도록 하겠습니다.
'Backend-dev > python' 카테고리의 다른 글
djanog urls파일 만들기 (0) | 2018.10.19 |
---|---|
reading 앱의 어드민을 커스텀 해보기 (0) | 2018.10.18 |
장고 프로젝트 시작 및 세팅 (0) | 2018.10.09 |
장고(django) 및 pipenv(가상환경) 다운로드 하기 (0) | 2018.10.08 |
장고의 MVT 패턴 (0) | 2018.10.07 |