Django 信号 m2m_changed 未触发

标签 django django-admin signals m2m

我最近开始在我的 Django 项目(v. 1.3)中使用信号,除了
我只是不明白为什么 m2m_changed 信号永远不会在我的模型上被触发。通过在 Django 管理表单上添加/删除 PageChild 内联实例来编辑 Section 实例。

我尝试按照文档中的描述以任何一种方式注册回调函数,但没有得到任何结果。

摘自我的models.py

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


class Section(models.Model):
    name = models.CharField(unique = True, max_length = 100)
    pages = models.ManyToManyField(Page, through = 'PageChild')

class PageChild(models.Model):
    section = models.ForeignKey(Section)
    page = models.ForeignKey(Page, limit_choices_to = Q(is_template = False, is_background = False))


@receiver(m2m_changed, sender = Section.pages.through)
def m2m(sender, **kwargs):
    print "m2m changed!"

m2m_changed.connect(m2m, sender = Section.pages.through, dispatch_uid = 'foo', weak = False)

我错过了一些明显的东西吗?

最佳答案

这是一个开放的错误:https://code.djangoproject.com/ticket/16073

这周我浪费了几个小时。

关于Django 信号 m2m_changed 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6463863/

相关文章:

Django Rest 框架 api 响应插件

django - 在 Django 表单中,如何将字段设置为只读(或禁用)以使其无法编辑?

python - Django:将新外键添加到现有模型,默认值为同一模型中的另一个外键

Django:如何在登录时在管理中设置默认语言

bash - 使用 bash 通过 ssh 启动一个进程,然后在 sigint 上终止它

c - 信号函数返回类型的真正用途是什么

python - 多个字段到同一个数据库列

Django 。管理站点中表单的取消按钮

django - 如何使用 call_command 执行 Django 的 `syncdb --noinput`?

C - 多个子级 - 信号相互覆盖