python - 如何断开 django 信号?

标签 python django model signals

我的 MessageFolder 模型中有一个信号可以正常工作,但是在某些特殊情况下我不希望发生 post_save 信号操作。在这种情况下我该如何停用它?

我已经尝试了以下方法,但它不起作用。

Views.py

        signals.post_save.disconnect(receiver=MessageFolder,sender=Message)

        email_message = EmailMessage(
            subject,
            message,
            my_username,
            [recipent,],
            [],  # ['bcc@example.com'],
            headers = {'Reply-To': 'gusreyes01@example.com'}
        )

        signals.post_save.connect(MessageFolder,MessageFolder.assign_message_folder)

        # Save it
        my_mailbox.record_outgoing_message(
            email_message.message()
        )

模型.py

class MessageFolder(models.Model):

folder        = models.ForeignKey(Folder, null = True, blank = True)
message       = models.ForeignKey(Message, null = True, blank = True)

@receiver((post_save), sender=Message, dispatch_uid="assign_message_folder")
def assign_message_folder(sender, instance, created, **kwargs):
    if not created: 
        return
    else:
        # generate MessageFolder && UserFolder
        if(instance.outgoing):
            message_folder = MessageFolder(None, 2, instance.pk)
        else:
            message_folder = MessageFolder(None, 1, instance.pk)

    message_folder.save()
    return

最佳答案

我用过下面的,它对我有用

断开连接:

signals.post_save.disconnect(assign_message_folder, sender=MessageFolder)

连接:

signals.post_save.connect(assign_message_folder, sender=MessageFolder)

关于python - 如何断开 django 信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33402842/

相关文章:

python - QAbstractTableModel 作为一个 QTableView 和几个 QListView 的模型

cakephp - 如何使用 : $this->Auth->user ('id' ) in a model? Cakephp 3.0

testing - 推荐的基于模型的测试工具

python - 如何针对 Django 和 Python 版本优化我的 Travis CI 矩阵?

python - 创建随机字符串和随机十六进制数的最轻量级方法

python - 带有 url_for() 的 flask 中的多部分 url

python - 如何在 Django TemplateView 中定义变量?

python - 仅使用套接字的 Python 邮件客户端(无 smtplib)

python - 在 Django 中使用 Stripe API 创建产品

javascript - Django:在模板中使用 javascript 在字符串中的逗号后添加空格