Как организовать проект Django с абстрактными моделями - PullRequest
4 голосов
/ 13 октября 2009

У меня есть несколько моделей: «Статья, Видео, BlogPost, Новости, Товар». Каждый в своем приложении.

Все они в основном одинаковые модели с несколькими дополнительными полями на каждой. Но в каждой акции около 15 полей. Я использую абстрактный базовый класс . Я пытаюсь выяснить, как я должен сделать организацию для этого. Моя текущая настройка выглядит так:

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

Хотя я знаю, что это не очень хороший способ, я просто не уверен, куда поместить всю информацию, которой делятся. Я делаю так, тогда для каждого приложения просто делю на подклассы Form или Model и делаю локальные модификации. Поскольку они представляют собой небольшое количество изменений по сравнению с общей картиной, я думаю, что абстрактный класс - это путь, но я могу ошибаться.

Они имеют такую ​​большую структуру, но по понятным причинам я хотел бы оставить их отдельными приложениями. Но я бы хотел немного навести порядок.

Любые мысли будут с благодарностью.

Ответы [ 2 ]

4 голосов
/ 13 октября 2009

Я устанавливаю приложение, которое могу использовать в разных проектах, и называю его tools. В tools у меня есть базовые базовые модели, которые я часто использую в разных проектах и ​​импортирую по мере необходимости.

Например, у меня есть CreatedModifiedModel в tools/models.py, который добавляет поля для времени создания и модификации, а также пользователя, который сделал создание и изменение.

После однократного определения я могу просто сделать:

from tools.models import CreatedModifiedModel    

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

Вы можете создать одно приложение под названием base или core или tools, а затем поместить туда все свои абстрактные классы, чтобы поддерживать его в чистоте и использовать в будущем.

1 голос
/ 13 октября 2009

Проект Pinax похож на группы. Они создали свой базовый класс и те, которые расширяют его в приложение.

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

Кажется, это здорово организовать. Вы можете посмотреть их исходный код на github.

...