Python 在Django中注册多个信号

Python 在Django中注册多个信号,python,django,signals,Python,Django,Signals,我试图在一个模型上注册多个信号。似乎当我注册一个附加信号时,它会删除先前的信号 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):

我试图在一个模型上注册多个信号。似乎当我注册一个附加信号时,它会删除先前的信号

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"
我已经查看了文档,但我一直在寻找如何在类格式中创建自定义信号的详细信息。不是如何以类格式注册

我可以想象我可以做这样的事情:

@reciver(sender=Resource)
class SignalAnsweringMachine(object):
    def post_delete(self,**kwargs):
        print "delete"
    def post_save(self,**kwargs):
        print "save"
提前感谢您的帮助。

您(可能是无意中)正在重新定义ResourceSaved。请尝试以下方法:

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

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

我使用这个简短的表单来注册两个或多个处理程序

在我的例子中,我清除了缓存的类别列表

from django.dispatch import receiver
from django.db.models.signals import post_save, post_delete
from ..models import Category

all_categories = []

# Post save handler for Category model to clear "all_categores" variable
@receiver(post_save, sender=Category)
@receiver(post_delete, sender=Category)
def post_save_category(sender, **kwargs):
    # clean cached categories
    global all_categories
    all_categories = []

现在,您可以在信号接收器中使用以下语法:

@receiver([post\u save,post\u delete],sender=Resource)
def资源已保存(发送方,**kwargs):
通过