5편 https://heokknkn.tistory.com/9
자 ! 먼저 공통으로 쓰는 부분을 모아보겠습니다 !
예를 들어서 어떤 사람이 글을 썼는데 그 글에 대한 정보를 저장 할 때 !!! 생성시간 이라던가 이 글을 수정 했을 때의 시간이라던가 등등등 공통으로 쓰는 부분이 있겠죠?? 이것으로 모아봅시다 ! 이것이 Core !!
Core ! 공통으로 ~ 만들어보자 ~
django-admin startapp core
먼저 위에처럼 core 앱을 하나 만들어주세요 !
그러고 나서 core에 models를 봐볼까요??
여기서 자신이 정말 공통으로 쓰여질 항목을 써줍니다 !
일단 아래를 한번 봐주세요 !!! 저는 생성시간과 업데이트 시간을 써줬습니다 !
여기서 가장 중요한건 마지막입니다 !
Meta ! 이 부분이 뭐냐면
장고에서 마이그레이션을 할 때 abstract를 True로 하면 이 모델에 대해서는 테이블을 생성하지 않습니다 !!!
실제로 무슨 말이야? 라고 할 수 있는데요 !!
이렇게 공통으로 쓰는것을 그냥 선언만하고 마이그레이션을 하면 core라는 테이블이 생성 될 수도 있습니다 !
하지만 저희는 core에 안에 있는것을 추상화 해서 다른곳에서 상속받아서 사용하려고 하는거지 굳이 core에 테이블이 필요하지 않습니다 !
그럼 한번 봐볼까요??
먼저 meta부분을 주석처리해봣습니다 !!
그리고 나서 마이그레이트 !!! 그럼 성공했습니다 !
또한 위에처럼 core의 테이블이 생성됩니다 ! 이건 저희가 원하는 테이블이 아닙니다 !
자 그러면 삭제해줍시다 !
테이블 삭제는 조금 귀찮지만 !!! 쉽습니다 !!! 정말입니다 !
위에서 migrations안에 있는 __init__.py를 빼고 다 지워주세요 !!
그리고 아래와 같이 해주세요 !
py manage.py dbshell 실행 후
drop table '지우고싶은 테이블 명'
저는 참고로 drop table core_AbstractTimeStampedModel
exit 를 실행해서 db로부터 나옵시다
자 ! 그러면 다시 깨끗한 상태가 됩니다 !
그럼 이번엔 meta의 abstract를 True로 하고 마이그레이트를 실행해볼까요?
마이그레이트 하고 밑에서 테이블을 확인해주면
core에 관한 테이블은 생성되지 않았습니다 !!!
즉 core라는 앱은 가상의 상태로 ! 상속을 받아서 사용이 가능 한 상태임을 알 수 있습니다 !!
하지만?? 이것을 한번 해봐야 진짜로 알겠죠???
그럼 한번 사용해봅시다 !!!
저는 communities라는 앱을 만들어서 진행해보겠습니다 !
저기서 core를 import 해서 class에서 상속을 받습니다 !!!
자 이렇게 하고 마이그레이트를 해봅시다 !!!
성공 !!
짠 ! 저렇게 성공했습니다 !
이렇게 core 앱을 이용하는 방법을 알아봤습니다 !
공통으로 모으는 것은 core뿐만 아니라 자신만의 앱을 정해서 만들면 무궁무진하게 사용할것같으니 !!
이 방법은 많이쓰니까 숙지해두면 좋을거같습니다 !!
아 ! 전 개인적으로 상속받은값이 맨 마지막 컬럼으로 갈 줄 알았는데 ㅜㅜ
이 방법은 저도 조금 더 찾아보고 알아내면 수정하겠습니다 !