如何在多个接收机上仅触发一次Django信号

2024-04-26 11:41:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种方法来做到以下几点(请记住,如果信号无法做到这一点,我很高兴您知道任何替代方案)

但假设我们有一个定义如下的信号:

from django.dispatch import receiver

@receiver(post_save, sender=Model1)
@receiver(post_save, sender=Model2)
@receiver(post_save, sender=Model3)
def my_signal_handle(sender , **kwargs)
    # some code here

现在,所有3个模型(模型1、模型2、模型3)都是相关的。因此,在创建新资源时,可以提供所有信息,这将导致所有3个表都与新行一起保存。在这种情况下,我只想触发my_signal_handle一次。所以基本上是每笔交易

另外,例如,当更新时,我们只能更新,比如Model3,在这种情况下,我仍然希望这个信号运行

所以目标是->;无论有多少型号受到影响,我都要运行此信号一次

希望它是有意义的,如果需要,很高兴能更好地澄清。我想在每个事务中添加一个信号,但找不到确切的需要


Tags: 方法from模型signal定义信号mysave