python - 在 Django 中注册多个信号

标签 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):
    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"

关于python - 在 Django 中注册多个信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923012/

相关文章:

python - Pandas 中的条件颜色格式

python - 在 Tweepy 中显示 Twitter 状态的转发者

html - 从 Django 发送时,Gmail 无法正确呈现带有 html 中断的电子邮件

python - 如何设置 Django 在 Travis CI 上的 PostgreSQL 上运行测试?

c++ - 多线程: Signal vs BusyWait(Polling), 线程间条件变量问题

python - Django 卡在应用巨大的迁移上

python - 将 SQL 转换为 SQL 炼金术

使用自定义表单的 Django 内联表单集

linux - 仅当线程运行时才向线程发送信号

multithreading - 将 QList<QString>* 传递给来自 QThread 的信号