如何解决涉及干草堆的循环导入?

时间:2013-07-08 07:04:26

标签: django import signals django-haystack

草堆

haystack_signal_processor允许您使用自定义信号处理器为某些模型启动索引。

我有我的settings.py

HAYSTACK_SIGNAL_PROCESSOR='my_app.signals.MySignalProcessor'
(这会导入signals.py所以。这是设置 - >信号)

然后在signals.py我的内心 from my_app.models import my_model#连接my_model
并且my_app.models.py有from django.conf import settings
(信号 - >模型 - >设置)

如何解决此循环导入问题?

1 个答案:

答案 0 :(得分:5)

取自https://github.com/PitonFoundation/atlas/commit/cc0abcb

不是在signals.py文件的基础上导入模型,而是使用get_model在自定义SignalProcessor的方法中导入模型:

from django.db.models.loading import get_model

class MySignalProcessor(signals.BaseSignalProcessor):
    def setup(self):
        MyModel = get_model('myApp', 'MyModel')
        models.signals.post_save.connect(self.handle_save, sender=MyModel)