我有多个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。
答案 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
似乎是放置这些内容的好地方。它在服务器启动时立即运行,因此它可用于其他所有内容。到目前为止似乎工作正常。