Ich habe kürzlich angefangen, Signale in meinem Django-Projekt (v. 1.3) zu verwenden und sie funktionieren alle gut, außer dass ich einfach nicht verstehen kann, warum das m2m_changed-Signal nie auf meinem Modell ausgelöst wird. Die Sektionsinstanz wird bearbeitet, indem PageChild Inline-Instanzen auf einem Django-Admin-Formular hinzugefügt/gelöscht werden.
Ich habe versucht, die Rückruffunktion auf die in der Dokumentation beschriebene Weise zu registrieren, aber ohne Ergebnis zu erzielen.
Auszug aus meiner 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 geändert!"
m2m_changed.connect(m2m, sender = Section.pages.through, dispatch_uid = 'foo', weak = False)
Übersehe ich etwas Offensichtliches?