Django:有没有办法取消为特定模型信号触发的接收器?



我有一个post_save信号接收器,用于我的域中的模型。此接收器由在该模型上运行保存的许多例程触发(因此我还无法删除该接收器(。

@receiver(signal=post_save, sender=OrderGroup)
def check_commission_should_be_synced(sender, instance, created, **kwargs):
# Receiver procedure
# ...

我想取消对操纵我的模型的特定方法的触发。这可能吗?

我正在使用Django 1.7Python 2.7.

向模型添加一个默认为 False 的非数据库布尔属性,例如:

class MyModel(models.Model):
# existing datanase fields
trigger_post_save = False

对于您不想触发post_save的方法,请在保存之前将其设置为 True:

my_instance.trigger_post_save = True
my_instance.save()

最后,在你修饰的方法中检查值并返回是否设置了:

@receiver(signal=post_save, sender=OrderGroup)
def check_commission_should_be_synced(sender, instance, created, **kwargs):
if instance.trigger_post_save:
return
# the rest of code

最新更新