django - 我如何使用信号注释?

时间:2012-09-28 19:15:15

标签: django

或者更确切地说,我有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,但导致了导入错误。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

当像这样卡住时,我只是注册接收器而不指定发送者,并在函数体内进行模型导入。

@receiver(pre_save)
def handler(sender, instance, created, **kwargs):
    from models import MyModel
    if not isinstance(sender, MyModel):
        return
    do_stuff()