Le code suivant est dans un signal Django et lorsque le nombre de copies est '2', le code suivant crée plus de 80 copies, puis se bloque ... Qu'est-ce qui ne va pas?Python deepcopy dans un signal post_save?
def internal_signal(sender, instance, signal, created, *args, **kwargs):
for i in range(instance.number_of_copies):
item_copy = deepcopy(instance)
item_copy.id = item_copy.id + 1
item_copy.internal_barcode = "%s"%(item_copy.item_location.location_code)
item_copy.save()
post_save.connect(internal_signal, sender=Inventory)
Merci.
Édition: Duh! Trouvé le problème, le code ci-dessus faisait partie de l'opération post_save d'un signal Django, de sorte que chaque «sauvegarde» déclenche une autre boucle, puis crash de tas.
Quelle est la meilleure façon de créer des 'n' objets et de les enregistrer dans Django par programmation?
Merci pour la réponse. Le problème était que 'deepcopy' était placé dans le signal post_save et chaque sauvegarde de l'objet clone résultait en une récursion. J'ai donc simplement déconnecté le signal avant de cloner et connecté le signal après l'opération et tout fonctionne correctement. – lud0h