Ich versuche, Django in einem Fall kein Signal zu senden. Beim Hinzufügen einer neuen Instanz des Modells Delivery
(direkt nach dem Erstellen eines Job
) als Attribut des Modells Job
, möchte ich kein Signal senden, da das Signal den Administrator benachrichtigen soll, dass Job
bearbeitet wurde.post_save.disconnect funktioniert überhaupt nicht
Leider kann ich es nicht funktionieren lassen.
@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)
Wo ist das Problem? Ich habe dies getan, aber ich bekomme immer noch zwei Warnungen - New Order
und Edited Order
.
Hat lösen das Problem hierbei http://stackoverflow.com/questions/11487128/django-temporarily-disable-signals? –