【发布时间】:2016-10-03 23:32:21
【问题描述】:
我试图让 Django 在一种情况下不发送信号。当添加模型Delivery 的新实例(在创建Job 之后)作为模型Job 的属性时,我不想发送信号,因为信号应该提醒管理员Job 已被编辑。
很遗憾,我做不到。
@receiver(post_save,sender=Job) # When Job is created or edited
def alert_admin(sender,instance,created,**kwargs):
if created:
email.AdminNotifications.new_order(instance)
else:
email.AdminNotifications.edited_order(instance)
@receiver(post_save,sender=Job) # When job is created, I want to create a delivery object as an attribute of Job
def create_delivery(sender,instance,created,**kwargs):
if created:
delivery,created_delivery = Delivery.objects.get_or_create(job=instance)
instance.delivery = delivery
delivery.save()
post_save.disconnect(alert_admin)
instance.save() # I DONT WANT TO SEND SIGNAL IN THIS CASE
post_save.connect(alert_admin)
问题出在哪里?我这样做了,但我仍然收到两个警报 - New Order 和 Edited Order。
【问题讨论】:
-
这是否解决了您的问题stackoverflow.com/questions/11487128/…?
标签: python django django-models django-signals