J'ai récemment commencé à utiliser des signaux dans mon projet Django (v. 1.3) et ils fonctionnent tous bien sauf que Je n'arrive pas à comprendre pourquoi le signal m2m_changed n'est jamais déclenché sur mon modèle. L'instance de Section est éditée en ajoutant/supprimant des instances de PageChild inline sur un formulaire d'administration django.Django signal m2m_changed pas déclenché
J'ai essayé d'enregistrer la fonction de rappel dans l'une ou l'autre des directions décrites dans la documentation, mais je n'obtiens aucun résultat.
Extrait de mon 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)
Suis-je manque quelque chose d'évident?
Où est-ce que vous savez? Vous cherchez la même réponse. –
Ceci est maintenant corrigé (1.6) – nima
Parfois, lorsque je copie et collez du code à partir d'un autre récepteur de signaux, j'oublie de mettre à jour le nom de la fonction et un seul d'entre eux s'exécute. – freb