설문조사라는 기능을 구현하기 위해 survey
라는 앱을 만든 후에 모델을 작성하는 중에 하나의 앱에 여러 개의 모델이 존재할 수 있는지에 대한 의문이 생겼습니다.
그래서 이와 관련된 내용을 찾아봤는데, 스택오버플로우에 어떤 형님이 이런 말씀을 남겨 두셨습니다.
One of the key ideas for a reusable application is: Do one thing, and do it well
결국 재사용 가능한 애플리케이션이 되기 위해서는 하나의 일을 잘 해낼 수 있어야 한다는 것인데, 설문조사라는 기능이 하나의 프로세스라고 생각하니 하나의 앱에 여러 개의 모델을 넣어도 괜찮을 것 같습니다.
그런데 굳이 쓰지도 않을 앱을 새로 만들어서 모델을 추가하는 일을 하는 것은 좀 아닌 것 같고, 하나의 앱에 모델들을 여러개 넣는 것이 맞는 것 같습니다.
그래서 각 모델들을 나누어 적용하기 위해 아래와 같이 디렉토리 구조를 변경해주었습니다.
기존 models.py
에서 모델들을 하나의 파일로 분리하여 models 디렉토리 안에 해당 모델을 추가하였습니다.
survey
| __init__.py
| apps.py
| admin.py
| views.py
| tests.py
+---migrations
+---models
| question.py
| survey.py
| survey_question.py
\ __init__.py
이후 장고에서 해당 디렉토리를 인식하게 해주기 위해 __init__.py
파일에 아래와 같이 추가하였습니다.
from .question import Question
from .survey import Survey
from .survey_question import SurveyQuestion
__all__ = ["SurveyQuestion", "Survey", "Question"]
이후 장고에서 해당 디렉토리를 인식하여 마이그레이션이나 이름 매칭이 정상적으로 이루어지는 것을 확인할 수 있었습니다.