2009-10-13 3 views
4

'Article, Video, BlogPost, News, Commodity'와 같은 모델이 있습니다. 각각은 자신의 응용 프로그램에 있습니다.추상적 모델로 장고 프로젝트를 구성하는 방법

모두 기본적으로 각각에 몇 가지 추가 입력란이있는 동일한 모델입니다. 그러나 각각은 약 15 개의 밭을 공유합니다. abstract base class을 사용하고 있습니다. 나는 이것을 위해 조직을 어떻게해야하는지 알아 내려고하고있다. 현재 설정은 다음과 같습니다.

apps/ 
    abstract_models.py 
    abstract_templatetags.py 
    abstract_forms.py 
    articles/ 
     models.py 
     ... 
    videos/ 
     models.py 
     ... 
    blogs/ 
    ... 

나는 이것이 좋은 방법은 아니지만, 공유되는 모든 정보를 어디에 둘지 잘 모르겠습니다. 나는 이런 식으로, 그때 애플 리케이션마다 단지 양식이나 모델을 서브 클래 싱하고 로컬 수정을하고있다. 그것들은 단지 작은 양의 변화들과 전체 그림과 같기 때문에 추상적 인 클래스가 갈 길이라고 생각하지만 틀릴 수도 있습니다.

그들은 너무 많은 구조를 공유하지만 명백한 이유로 별도의 앱으로 유지하려고합니다. 하지만 조금 정리하고 싶습니다.

모든 의견을 크게 기뻐할 것입니다.

답변

4

다른 프로젝트에서 사용할 수있는 앱을 설정하고 tools이라고 부릅니다. tools에는 프로젝트 전반에서 재사용하고 필요한 곳에서 가져 오는 경향이있는 기본 기본 모델이 있습니다.

예를 들어 CreatedModifiedModel에는 tools/models.py이 있으며 작성 및 수정을위한 필드와 작성 및 수정 한 사용자를 추가합니다. 한 번 정의 된 후

, 나는 간단하게 수행 할 수 있습니다

from tools.models import CreatedModifiedModel  

class Widget(CreatedModifiedModel): 
    # comes with my four fields automatically 

당신은 거기에 모든 추상 클래스를 넣어 다음 base 또는 core 또는 tools와라는 하나의 응용 프로그램을 만들 수 있습니다, 깨끗하게 유지하는 데 도움합니다 미래에 재사용 할 수 있습니다.

1

Pinax project은 그룹과 비슷한 것을 가지고 있습니다. 그들은 기본 클래스와이를 응용 프로그램으로 확장 한 클래스를 만들었습니다.

/apps 
    /group 
     base.py 
     ... 
    /projects 
     models.py 
     ... 

이렇게 구성하는 것이 좋습니다. github에서 소스 코드를 살펴볼 수 있습니다.