0

或者更确切地说,当我包含来自models.py的signals.py时,我遇到了Django和信号的旧双重导入问题

我宁愿不必为信号输入“只运行一次”代码,但如果我绝对必须这样做,我可能会这样做。这似乎是一个愚蠢的黑客行为。

反正,

给定我有一个signals.py 文件并且其中一个信号用于models.py 中定义的对象之一,我如何为它创建注释?

如果我包含该模型,那么我会遇到 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的,但是导致了描述的导入错误。

我该怎么办?

4

1 回答 1

1

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

@receiver(pre_save)
def handler(sender, instance, created, **kwargs):
    from models import MyModel
    if not isinstance(sender, MyModel):
        return
    do_stuff()
于 2012-09-28T21:05:25.670 回答