Le mardi 06 janvier 2015 à 22:15 +0100, [email protected] a écrit : > > Le dimanche 04 janvier 2015 à 19:03 +0100, [email protected] a écrit : > > salut claude, dom, > > > > l'introduction étant faite, j'en viens à mon problème (django 1.7 et > > > python3 sous linux, of course). (...) > > > > > > l'un d'entre vous a-t-il une idée sur le comment du pourquoi? d'autant > > > plus que je m'assure de ne pas avoir de foreign key de l'élément que > > > j'efface vers d'autres entrées. > > > > Dans des cas comme ça, le mieux est de poser un point d'arrêt (import > > pdb; pdb.set_trace()) juste avant le delete() qui pose problème. > > Ensuite, tu suis le code pas à pas pour voir ce que fait Django. > > Cela t'amènera probablement à Collector.collect et tu verras peut-être > > pourquoi Django ajoute la ligne qu'il ne devrait pas dans la liste des > > objets à supprimer. > > finalement, j'ai légèrement changer ma méthode removeEntry (le block > "with", en fait), et cela semble fonctionner correctement maintenant: > > with transaction.atomic(): > if self.prev_entry == self.next_entry: > self.prev_entry.next_entry = self.prev_entry > self.prev_entry.prev_entry = self.prev_entry > self.prev_entry.save() > else: > self.prev_entry.next_entry = self.next_entry > self.prev_entry.save() > self.next_entry.prev_entry = self.prev_entry > self.next_entry.save() > self.next_entry = None > self.prev_entry = None > self.save() > # pdb.set_trace() > self.delete() > > > j'ai une hypothèse que, lorsque il ne me restait que 2 éléments, les > objets django self.prev_entry.next_entry et self.next_entry.prev_entry > étaient deux objets distinct, alors qu'au niveau base de données, il > s'agit du même objet.
Oui, l'hypothèse se tient. En mémoire, il s'agit effectivement de deux objets distincts (avec les mêmes contenus, bien sûr). Claude -- www.2xlibre.net _______________________________________________ gull mailing list [email protected] http://forum.linux-gull.ch/mailman/listinfo/gull
