或者更确切地说,我有Django的旧的双重导入问题,当我从models.py中包含signals.py时发出信号
我宁愿不必为信号添加“仅运行一次”代码,但如果我绝对必须,我可能会这样做。它看起来就像是一个愚蠢的黑客。
无论如何,
给定我有一个signals.py文件,其中一个信号是为models.py中定义的一个对象,我如何为它创建注释?
如果我包含该模型,那么我会得到ol'“循环引用”问题,但令人困惑的是,Python似乎仍被绊倒了。但它只是2012年。
我尝试使用get_model,但这似乎不起作用...现在要求信号所有保存在模型中的任何和所有模型.py文件。
这是注释,现在看起来像是什么:
@receiver(pre_save, sender=get_model('myapp.models','Story'))
我也试过
@receiver(pre_save, sender=Story)
上面有相应的from myapp.models import Story
,但导致了导入错误。
我该怎么办?
答案 0 :(得分:1)
当像这样卡住时,我只是注册接收器而不指定发送者,并在函数体内进行模型导入。
@receiver(pre_save)
def handler(sender, instance, created, **kwargs):
from models import MyModel
if not isinstance(sender, MyModel):
return
do_stuff()