2017-02-09 5 views
1

私はたくさんのアプリを持っています。それにはactivity.pyというファイルが含まれていても、いなくてもかまいません。このファイルは基本的にモデル信号を登録します。これは、AppConfigクラスのreadyメソッドでこのファイルをインポートするとうまく動作します。問題は、私はダースのアプリを持っているので、私はすべての私のアプリケーションでは、この同じメソッドを持ってしたくないです。Djangoのinitの後にコードを実行

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にそれを置くことになり、別のアプリを作成することです。そのアプリでは、サブクラスAppConfigAppConfig.ready()メソッドをオーバーライドします。

関連する問題