2017-02-09 135 views
1

我有一堆应用程序,可能包含或不包含名为activity.py的文件。该文件基本上记录模型信号。当我在AppConfig类的ready方法中导入此文件时,它工作正常。问题是我有十几个应用程序,所以我不希望在我的所有应用此相同的方法:Django初始化后执行代码

def ready(self): 
    # register signal for activity feed 
    from . import activity 

我想通过INSTALLED_APPS阵列运行一个脚本,将,如果这个应用程序包含文件activity.py,导入它。
我无法找到一种方式来运行一个函数,当所有的应用程序已准备好,并且在服务器正在侦听之前。

回答

0

您可以尝试使用以下方法:

from django.conf import settings 
from importlib import import_module 

for app in settings.INSTALLED_APPS: 
    module_name = '%s.%s' % (app, "activity") 
    try: 
     import_module(module_name) 
    except ImportError: 
     pass 
+0

我什么时候可以运行这段代码?所有模型必须先实例化 –

1

一件事你可以做的就是创建一个应用,其唯一目的将是执行初始化并把它放在INSTALLED_APPS。在该应用中,子类AppConfig并覆盖AppConfig.ready()方法。