code: def get_depth(self, update=False):
          
  
          if self.parent_id is None:
              return 1
  
          try:
              if update:
                  del self._cached_depth
              else:
                  return self._cached_depth
          except AttributeError:
              pass
  
          depth = 0
          node = self
          while node:
              node = node.parent
              depth += 1
          self._cached_depth = depth
          return depth
docs: :returns: the depth (level) of the node
              Caches the result in the object itself to help in loops.
  
          :param update: Updates the cached value.