Django:有没有办法取消对特定模型信号的接收器触发?
Django: Is there a way to cancel an receiver triggering for a particular model signal?
我有一个 post_save
信号接收器用于我所在领域的模型。该接收器由许多 运行 保存该模型的例程触发(因此我还不能删除该接收器)。
@receiver(signal=post_save, sender=OrderGroup)
def check_commission_should_be_synced(sender, instance, created, **kwargs):
# Receiver procedure
# ...
我想取消它对操纵我的模型的特定方法的触发。这可能吗?
我正在使用 Django 1.7
和 Python 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()
最后,在您的修饰方法中检查值,return 如果已设置:
@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
我有一个 post_save
信号接收器用于我所在领域的模型。该接收器由许多 运行 保存该模型的例程触发(因此我还不能删除该接收器)。
@receiver(signal=post_save, sender=OrderGroup)
def check_commission_should_be_synced(sender, instance, created, **kwargs):
# Receiver procedure
# ...
我想取消它对操纵我的模型的特定方法的触发。这可能吗?
我正在使用 Django 1.7
和 Python 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()
最后,在您的修饰方法中检查值,return 如果已设置:
@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