为何在管理网站上“m2m_changed”信号从未触发?

-1 投票
1 回答
859 浏览
提问于 2025-04-16 23:35

我也不知道这是不是个bug,还是我理解错了什么。不过你可以试试这个:

这是一个简单的通用测试:

from django.dispatch import receiver
from django.db.models.signals import m2m_changed

@receiver(m2m_changed)
def test_handler(sender, instance, action, reverse, model, pk_set, **kwargs):
     import sys
     print>>sys.stderr, action

把这段代码加到你的程序里,然后试着从管理后台编辑一个包含多对多关系的模型。你可以在这个关系中添加或删除一个对象。然后你会发现信号没有触发:S

但是,如果你在命令行里做同样的事情……一切都正常。

有没有人能试试,确认一下这不是我电脑上的超自然现象?

提前谢谢你们。

1 个回答

0

我在我的一个模型上试过,效果很好。如果你能把模型文件的所有代码内容都发出来,那就更有帮助了。

撰写回答