Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le signal de sauvegarde de la publication de Django est appelé deux fois malgré l'uid

Ok donc j'ai déplacé l'import vers views.py (ou models.py et alors qu'il n'était importé qu'une seule fois, il était appelé deux fois.

Le problème était que le post_save signal était appelé lorsque l'objet a été créé et enregistré. Je ne sais pas pourquoi, alors j'ai ajouté une solution de contournement qui fonctionne maintenant

created = False

    #Workaround to signal being emitted twice on create and save
    if 'created' in kwargs:
        if kwargs['created']:
            created=True

    #If signal is from object creation, return
    if created:
        return

Modifier :

post_save a été appelé deux fois parce que j'ai utilisé .create(...) qui équivaut à __init__(...) et .save() .

Conclusion

dispatch_uid fonctionne et faire des importations uniques est toujours une bonne pratique.