[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