Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Registering Multiple Signals in Django

I'm trying to register multiple signals on one model. It seems that as I register an additional signal, it removes the previous signal.

from django.dispatch import receiver
from django.db.models.signals import post_save,post_delete
from my.app.models import Resource


@receiver(post_save,sender=Resource)
def ResourceSaved(sender,**kwargs):
    print "Saved"

@receiver(post_delete,sender=Resource)
def ResourceSaved(sender,**kwargs):
    print "Deleted"

I've taken a look around the docs, but I keep finding details on how to create custom signals in a class formate. Not how to register in class format.

I would imagine I can do something like this:

@reciver(sender=Resource)
class SignalAnsweringMachine(object):
    def post_delete(self,**kwargs):
        print "delete"
    def post_save(self,**kwargs):
        print "save"

Thanks for your help in advance.

like image 298
jbcurtin Avatar asked Nov 27 '22 14:11

jbcurtin


1 Answers

You are (probably unintentionally) redefining ResourceSaved. Try this instead:

@receiver(post_save,sender=Resource)
def ResourceSaved(sender,**kwargs):
    print "Saved"

@receiver(post_delete,sender=Resource)
def ResourceDeleted(sender,**kwargs):
    print "Deleted"
like image 80
zeekay Avatar answered Dec 06 '22 19:12

zeekay