'This returns the ancestors of this urlpath. These ancestors are hopefully
cached from the article path lookup. Accessing a foreign key included in
add_selecte_related on one of these ancestors will not occur an additional
sql query, as they were retrieved with a select_related.
If the cached ancestors were not set explicitly, they will be retrieved from
the database.'

def __cached_ancestors(self):

    if (not self.get_ancestors().exists()):
        self._cached_ancestors = []
    if (not hasattr(self, u'_cached_ancestors')):
        self._cached_ancestors = list(self.get_ancestors().select_related_common())
    return self._cached_ancestors
