Django 在导入应用程序的设置中调用的信号:失败
我使用的是Django 在导入应用程序的设置中调用的信号:失败,django,django-haystack,Django,Django Haystack,我使用的是python3.4.3,Django 1.9.2和Django haystack 2.4.1 我只把必要的代码解释一下 这是我的设置: INSTALLED_APPS = ( ..., contacts.documents, haystack, contacts.search, ) HAYSTACK_SIGNAL_PROCESSOR = 'contacts.search.signals.MyRealtimeProcessor' from contact
python3.4.3
,Django 1.9.2
和Django haystack 2.4.1
我只把必要的代码解释一下
这是我的设置:
INSTALLED_APPS = (
...,
contacts.documents,
haystack,
contacts.search,
)
HAYSTACK_SIGNAL_PROCESSOR = 'contacts.search.signals.MyRealtimeProcessor'
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)
这是我的文件:contacts.search.signals.py:
INSTALLED_APPS = (
...,
contacts.documents,
haystack,
contacts.search,
)
HAYSTACK_SIGNAL_PROCESSOR = 'contacts.search.signals.MyRealtimeProcessor'
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.")
由于来自contacts.documents.models的在我的信号中导入文档
如何更正?在Django加载完所有应用程序之前,您无法加载模型。我不完全清楚为什么要在加载应用程序之前导入你的
signals.py
文件,但你可以通过将此逻辑移到类的\uuuuuu init\uuu
方法来解决这个问题:
def __init__(self, *args, **kwargs):
from contacts.documents.models import Document
self.document_model = Document
super(MyRealtimeProcessor, self).__init__(args, kwargs)
然后在handle\u save
中:
d_index = self.connections[using].get_unified_index()\
.get_index(self.document_model)