2016-04-12 13 views
0

Python 3.4.3,Django 1.9.2およびdjango-haystack 2.4.1を使用しています。アプリをインポートする設定で呼び出されたシグナル:failed

私は説明するために必須のコードを入れます。ここで

は私の設定です:ここでは

INSTALLED_APPS = (
    ..., 
    contacts.documents, 
    haystack, 
    contacts.search, 
) 

HAYSTACK_SIGNAL_PROCESSOR = 'contacts.search.signals.MyRealtimeProcessor' 

は私のファイルです:contacts.search.signals.py:このコードで

from contacts.documents.models import Document 

class MyRealtimeProcessor(RealtimeSignalProcessor): 

    def handle_save(self, sender, instance, **kwargs): 
     … 
     d_index = self.connections[using].get_unified_index()\ 
               .get_index(Document) 

私はエラーを取得します。

raise AppRegistryNotReady("Apps aren't loaded yet.") 

私のシグナルにはfrom contacts.documents.models import Documentがあります。

どのように修正できますか?

答えて

0

Djangoがすべてのアプリケーションの読み込みを完了する前にモデルを読み込むことはできません。アプリケーションがロードされる前に、あなたのsignals.pyファイルがインポートされている理由それは私には完全には明らかではないのですが、あなたは自分のクラスの__init__メソッドにこのロジックを移動することでこれを回避することができますhandle_save

def __init__(self, *args, **kwargs): 
    from contacts.documents.models import Document 

    self.document_model = Document 
    super(MyRealtimeProcessor, self).__init__(args, kwargs) 

、その後:

d_index = self.connections[using].get_unified_index()\ 
              .get_index(self.document_model) 
関連する問題