Vous n'êtes pas identifié(e).
bonjour,
j'ai un probleme avec les signaux, en suivant la doc de la 1.3:
https://docs.djangoproject.com/en/1.3/topics/signals/
J'ai ecrit:
@receiver(post_save, sender=MyModel)
def my_callback(sender, **kwargs):
if 'created' in kwargs:
if kwargs['created']:
print "sender", sender
print "Request finished!"
if kwargs['instance']:
mymodel = kwargs['instance']
print "mymodel ", mymodel
post_save.connect(my_callback, dispatch_uid="my_unique_identifier")
pour etre sur que ma callback est appelee a chaque fois que je cree un objet MyModel (au travers de l'interface d'admin).
Mais les traces du serveur me disent que ce n'est pas que l'instance d'un objet MyModel que je recupere:
sender <class 'myproj.models.MyModel'>
Request finished!
mymodel corpus: jpg methode: Methode object status: W cpu_time: None mem_used: None created_on: 2011-06-21 19:14:05.246381
sender <class 'myproj.models.MyModel'>
Request finished!
mymodel corpus: jpg methode: Methode object status: W cpu_time: None mem_used: None created_on: 2011-06-21 19:14:05.246381
sender <class 'django.contrib.admin.models.LogEntry'>
Request finished!
mymodel LogEntry object
La callback est donc appelee 3 fois, malgre le decorateur pour limiter a l'objet MyModel, et le test sur 'created'.
Comment interpreter ce resultat?
Merci d'avance pour toute aide,
gerard
Hors ligne
pour ceux que ca interesse, en modifiant le code (apres recherche sur le net), ca marche. En gros, j'ai supprime le decorateur, sa presence faisait que le code etait execute 2 fois avec les memes valeurs (peut etre que la presence du decorateur court-circuite le dispatch_uid?)
def my_callback(sender, instance, created, raw, **kwargs):
if created and not raw:
print "Request finished!"
post_save.connect(my_callback, sender=MyModel, dispatch_uid="toto")
Hors ligne