我最近开始在我的 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/