[gull] [Q] prob. effacement d'object dans django

sneaky56 at gmx.net sneaky56 at gmx.net
Tue Jan 6 22:15:59 CET 2015


> Le dimanche 04 janvier 2015 à 19:03 +0100, sneaky56 at gmx.net 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.

merci pour votre aide


tom


More information about the gull mailing list