2016-04-12 7 views
0

Ich verwende Python 3.4.3, Django 1.9.2 und django-haystack 2.4.1.Signal aufgerufen Einstellungen importieren eine App: fehlgeschlagen

Ich lege nur den wesentlichen Code zu erklären.

Hier ist meine Einstellungen:

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

HAYSTACK_SIGNAL_PROCESSOR = 'contacts.search.signals.MyRealtimeProcessor' 

Hier ist meine Datei ist: 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) 

Mit diesem Code I den Fehler erhalten:

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

Wegen from contacts.documents.models import Document in meinem Signal.

Wie kann ich das korrigieren?

Antwort

0

Sie können keine Modelle laden, bevor Django alle Apps geladen hat. Es ist nicht ganz klar zu mir, warum Ihre signals.py-Datei importiert wird, bevor die Anwendungen geladen werden, aber Sie können, indem diese Logik in die __init__ Methode Ihrer Klasse um diesen zu erhalten:

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

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

und dann in handle_save:

d_index = self.connections[using].get_unified_index()\ 
              .get_index(self.document_model) 
Verwandte Themen