Django 애플리케이션을 만드는 동안 일종의 딜레마가 발생합니다. 문제는 일반적으로 발생하는 문제가 MVC 패턴에 일반적으로 적용될 수 있다고 생각합니다. 나는 퀴즈 나 설문지를 만드는 데 사용할 수있는 Question
모델을 만들고 있습니다. Question
기본 클래스는 간단한 무료 응답 질문입니다. 객관식 질문이나 슬라이딩 스케일 질문과 같은 다양한 유형의 질문을 지원하고 싶습니다. 이러한 질문은 가능한 선택 목록과 같이 추가 필드가 추가 된 Question
기본 클래스의 하위 클래스가됩니다. 앞으로 더 많은 질문 유형을 지원하도록 내 질문 모델을 확장 할 수 있기를 바랍니다. 따라서 다형성에 의지하고 Question
의 모든 하위 클래스에 대해 모델 계층과 뷰 계층간에 Question
유형의 객체를 전달할 수 있습니다. .모델 다형성과 모델 뷰 분리
내가 겪고있는 문제는보기가 그것을 렌더링하기 위해받은 질문의 유형을 알아야한다는 것입니다. 객관식 질문을하면 라디오 선택 위젯 등을 그려야합니다. 이제 모델을 더 많은 유형의 질문으로 확장하면 모델과 뷰 레이어 모두에 추가해야합니다. 이것은 Question
객체를받는 뷰가받은 질문의 하위 클래스 유형을 항상 알아야하기 때문에 다형성의 포인트를 무력화시키는 것으로 보입니다. 질문을 모델로 돌려 보내는 책임을 위임하여이 문제를 해결할 수 있습니다. Question
모델에 서브 클래스가 오버라이드하는 render_question()
이라는 가상 함수가있는 경우 뷰 계층은 해당 유형의 함수를 호출하여 질문 유형에 대한 걱정없이 올바른 HTML을 출력 할 수 있습니다. 하지만 지금은 HTML 렌더링 코드가 모델과 묶여 있어야하는 문제가 있습니다.
내가 생각한 솔루션의 단점을 갖고 있지 않은 세 번째 솔루션이있을 수 있습니까? 아니면 진정으로 어려운 결정을 내려야하는 딜레마일까요?
응답 주셔서 감사합니다. 좋은 해결책 인 것 같습니다. 나는 followup을 가지고있다 :'BaseQuestionView'의 오른쪽 하위 클래스가'BaseQuestion'의 특정 인스턴스와 연관되어 있는지 어떻게 확인해야합니까? 런타임 중에'BaseQuestion'의 각 인스턴스가 인스턴스화되면, 그 질문이 인스턴스화 될 때'BaseQuestionView'의 올바른 하위 클래스 인 각 질문을 하나의 델리게이트와 연관시킵니다. 그러나이 작업을 수행하는 가장 좋은 방법은 데이터베이스 쿼리를 사용하여 채워지는 질문 목록과 함께하는 것이 확실하지 않습니다. 이 협회를 어떻게 구현 하시겠습니까? – solarein
업데이트 답변보기 – astevanovic