Niedawno zacząłem używać sygnałów w moim projekcie Django (w. 1.3) i wszystkie działają dobrze, z wyjątkiem tego, że Po prostu nie mogę zrozumieć, dlaczego sygnał m2m_changed nigdy nie zostanie wyzwolony w moim modelu. Instancja sekcji jest edytowana przez dodanie/usunięcie instancji wbudowanych PageChild w formularzu administratora django.Sygnał Django m2m_changed nie został uruchomiony
Próbowałem zarejestrować funkcję zwrotną w sposób opisany w dokumentacji, ale nie otrzymuję żadnych wyników.
Fragment mojego 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)
jestem brakuje czegoś oczywiste?
Gdzie możesz to zrozumieć? Poszukuję tej samej odpowiedzi. –
Naprawiono to teraz (1.6) – nima
Czasami, gdy kopiuję i wklejaję kod z innego odbiornika sygnału, zapominam o aktualizacji nazwy funkcji i tylko jeden z nich działa. – freb