Django - не специфичные для приложения models.py? - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть несколько приложений Django, и у меня есть некоторый код в одном из моих models.py, который действительно применим ко всем приложениям.Есть ли способ переместить его куда-нибудь за пределы определенной папки приложения?

Примеры кода, не относящегося к конкретному приложению, который у меня есть:

def update_groups(sender, user=None, ldap_user=None, **kwargs):
    ...

django_auth_ldap.backend.populate_user.connect(update_groups) 

Функция для правильной идентификации пользователей и подключенияк правильному сигналу.

У меня также есть модельный прокси django.contrib.admin.models.LogEntry и modelAdmin этого прокси модели, чтобы пользователи на сайте администратора могли просматривать историю изменений.Но они не принадлежат ни одному из моделей models.py.

Ответы [ 3 ]

2 голосов
/ 04 апреля 2011

Вы можете создать шаблонное приложение, которое может использоваться или расширяться (иерархия классов) всеми вашими другими приложениями, которые могут использовать этот код.

2 голосов
/ 04 апреля 2011

Хорошо, просто создайте модуль python где-нибудь в своем проекте, а затем укажите его в своих моделях.Для этого вам понадобится каталог с __init__.py файлом:

helpers/
   __init__.py 
   functions.py

Поместите свой код в functions.py и в любом другом месте вы сможете:

from helpers.functions import update_groups
post_save.connect(update_groups)

Название модуля зависит от вас, конечно.

1 голос
/ 04 апреля 2011

__init__.py в каталоге моего проекта - хорошее место для размещения этого материала.Он запускается сразу же после запуска сервера, поэтому он доступен для всего остального.Кажется, до сих пор работает нормально.

...