Django - 非app特定models.py?

时间:2011-04-04 13:00:54

标签: python django django-models

我有多个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 个答案:

答案 0 :(得分:2)

好吧,只需在项目中的某个位置创建一个python模块,然后在模型中进行参考。为此,您需要一个包含__init__.py文件的目录:

helpers/
   __init__.py 
   functions.py

将您的代码放入functions.py以及任何其他地方,您将能够:

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

模块的名称取决于您,当然。

答案 1 :(得分:2)

您可以创建一个可以使用或扩展的模板应用程序(类层次结构),这些应用程序可以使用该代码。

答案 2 :(得分:1)

我项目目录中的

__init__.py似乎是放置这些内容的好地方。它在服务器启动时立即运行,因此它可用于其他所有内容。到目前为止似乎工作正常。