2010-12-09 18 views
2

J'ai créé un signal:signal de mesure ne fonctionne pas

sig_published = Signal() 

Ce signal est placé dans un signals.py, que j'importer dans mon models.py:

from signals import sig_published 

et dans le modèle le pied de page de fichier, je le connecter à une fonction à des fins de test se contente d'afficher une chaîne de débogage .:

def update_mode(sender, **kwargs): 
    print "UPDATING" 
sig_published.connect(update_mode, sender=MyModel) 

maintenant, dans mon save() - Méthode, je tente d'envoyer un signal:

sig_published.send(sender=self) 

mais il n'imprime rien. Si j'essaie un signal intégré comme pre_save:

pre_save.connect(update_mode, sender=MyModel) 

cela fonctionne. Des idées?

+0

Pouvez-vous nous montrer votre méthode 'save'? –

Répondre

5

Vous émettons le signal avec sender égal à votre modèle de exemple, alors que vous vous connectez vous correspondant à contre MyModelclasse. Ces deux ne sont pas le même objet, donc votre récepteur ignore le signal. Vous pouvez comparer avec pre_save emitting code, qu'il utilise une classe, pas une instance.

+0

oh mon, c'est tout, merci. J'ai changé l'écouteur à sig_published = Signal (provide_args = ['instance']) et les expéditeurs en conséquence, et cela fonctionne. – schneck