2016-04-12 11 views
0

Python 3.4.3, Django 1.9.2 ve django-haystack 2.4.1 kullanıyorum.Bir uygulama içe aktarma ayarlarında çağrılan sinyal: başarısız oldu

Sadece açıklamak için gerekli kodu koyarım. Ben hataelde

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) 

Bu kod ile: contacts.search.signals.py: Burada

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

HAYSTACK_SIGNAL_PROCESSOR = 'contacts.search.signals.MyRealtimeProcessor' 

benim dosyasıdır: Burada

ayarlarım geçerli:

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

Sinyalimdeki from contacts.documents.models import Document yüzünden.

Nasıl düzeltebilirim?

cevap

0

Django, tüm uygulamaları yüklemeyi tamamlamadan modelleri yükleyemezsiniz. Bu uygulamalar yüklenir önce signals.py içe aktarılan dosyayı neden benim için tamamen net değil, ama Sınıfına __init__ yöntem haline bu mantığı hareket ettirerek bu sorunun üstesinden gelebilirsiniz: handle_save sonra

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

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

ve:

d_index = self.connections[using].get_unified_index()\ 
              .get_index(self.document_model) 
İlgili konular