Django - 非特定应用的models.py?
我有多个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
你可以创建一个模板应用,这个应用可以被你其他的应用使用或者扩展(通过类的继承)。这样,其他应用就可以利用这个模板里的代码了。
2
好吧,你只需要在你的项目里创建一个Python模块,然后在你的模型中引用它。为此,你需要一个包含 __init__.py
文件的目录:
helpers/
__init__.py
functions.py
把你的代码放到 functions.py
文件里,然后在其他任何地方你都可以使用它:
from helpers.functions import update_groups
post_save.connect(update_groups)
模块的名字你可以自己决定,当然。
1
在我项目的目录里,__init__.py
文件看起来是放这些东西的好地方。因为当服务器启动时,这个文件会立刻被运行,所以里面的内容对其他部分都是可用的。到目前为止,这样做效果很好。