Django post_save la prévention de la récursivité sans écraser modèle save()

Il y a beaucoup de Débordement de Pile messages au sujet de la récursivité à l'aide de la post_save signal, dont les commentaires et les réponses sont en grande majorité: "pourquoi ne pas remplacer save()" ou save qui est seulement ouvert le feu sur created == True.

Eh bien, je crois qu'il y a une bonne affaire pour ne pas utiliser save() - par exemple, je suis l'ajout d'une application temporaire qui gère le traitement des commandes des données complètement séparée de notre modèle.

Le reste du cadre est au courant de la réalisation de l'application et l'utilisation de post_save crochets isolats toute l'exécution connexes code de notre modèle.

Si on laisse tomber l'accomplissement du service, rien à propos de notre code de base qui doit changer. Nous supprimons la réalisation de l'app, et c'est tout.

Donc, il y a aucune décent méthodes pour assurer la post_save signal n'est pas feu le gestionnaire de même deux fois?

  • Est-ce juste une rumination, ou vous avez une situation particulière où vous avez observé plusieurs tirs de la même gestionnaire pour un événement unique? E. g. save() feux post_save, ce qui entraîne une autre gestionnaire de save() le même objet, et donc de provoquer un autre tir de post_save?
  • oui, si votre post_save gestionnaire doit enregistrer l'expéditeur exemple, il va déclencher post_save de nouveau.
  • lire ici avec bulk_create vous pouvez enregistrer sans postsave et presave appel django docs