2012-09-28 51 views
0

或者说,我有Django旧的双输入问题,并且当我包含models.py中的signals.py时发出信号。我宁愿不必将“只运行一次”代码放入信号,但我可能会这样做,如果我绝对必须。它就像是一个愚蠢的黑客。django - 我如何使用注释信号?

反正

给我有一个signals.py文件和信号之一是在models.py中定义的对象之一,我怎么为它创建注释?

如果我包含模型,那么我会得到ol'“循环引用”问题,Python令人困惑,仍然似乎被绊倒了。尽管只是2012年。

我尝试使用get_model,但似乎并没有工作......信号是现在所谓的在models.py文件中的所有节省任何和所有车型。

这里是注释,并且它看起来像现在:

@receiver(pre_save, sender=get_model('myapp.models','Story')) 

我也尝试

@receiver(pre_save, sender=Story) 

与相应from myapp.models import Story以上,反而造成描述的导入错误。

我该怎么办?

回答

1

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

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

真的很漂亮 – bharal