Hi, I got a too difficult problem for me :
Here's is my model Poll : class Poll(meta.Model): question = meta.CharField(maxlength=200) pub_date = meta.DateTimeField('date published') class META: admin = meta.Admin() def __repr__(self): return self.question def _post_save(self): from django.models.treemanager import trees a = trees.Tree(parent_id = 1,lhs = 0, rhs = 0, name = self.question, description = 'Description', table_name = 'polls_polls', table_id = self.id) a.save() And my model Tree : class Tree(meta.Model): parent = meta.ForeignKey("self") lhs = meta.IntegerField(null=False, default=0) rhs = meta.IntegerField(null=False, default=0) name = meta.CharField(maxlength=255, null=False, default='') description = meta.CharField(maxlength=255, null=False, default='') table_name = meta.CharField(maxlength=255, null=False, default='') table_id = meta.IntegerField(null=False, default=0) class META: admin = meta.Admin() def __repr__(self): return self.name def _pre_save(self): if self.id == None : from django.models.treemanager import trees from django.core.db import db print "Je suis ici" myParent = trees.get_object(pk = self.parent_id) updateLeftQuery = "UPDATE treemanager_trees SET lhs = lhs + %s WHERE lhs >= %s" %(2, myParent.rhs) updateRightQuery = "UPDATE treemanager_trees SET rhs = rhs + %s WHERE rhs >= %s" %(2, myParent.rhs) cursor = db.cursor() cursor.execute(updateLeftQuery) cursor.execute(updateRightQuery) self.lhs = myParent.rhs self.rhs = myParent.rhs + 1 And when I save a new Poll (from command line interface or web admin interface), I got this appening : 1 - New Poll is saved 2 - New Poll._post_save() is called 3 - New Poll creates a New Tree 4 - New Tree is saved but New Tree._pre_save() is NEVER called. Did I missed something ??? Regards, Laurent.