对于Django <1.7的原始答案: 你可以通过导入signals.py
应用程序的__init__.py
文件来注册信号:
# __init__.py
import signals
这将允许从中进行导入models.py,signals.py
而不会出现循环导入错误。
这种方法的一个问题是,如果你使用coverage.py,它会弄乱覆盖率结果。
如果您使用的是Django <= 1.6,我建议使用Kamagatos解决方案:只需将信号导入模型模块的末尾即可。
对于将来的Django版本(> = 1.7),建议的方法是将信号模块导入应用程序的config ready()函数中:
my_app/apps.py
from django.apps import AppConfig
class MyAppConfig(AppConfig): name = ‘my_app’
def ready(self):
import my_app.signals
my_app/.py