code: def _cache_init(self):
          
          cache_ = cache.get(self.CACHE_ENTRY_NAME)
  
          if cache_ is None:
              categories = get_category_model().objects.order_by('sort_order')
  
              ids = {category.id: category for category in categories}
              aliases = {category.alias: category for category in categories if category.alias}
  
              parent_to_children = OrderedDict()  # Preserve aliases order.
              for category in categories:
                  parent_category = ids.get(category.parent_id, False)
                  parent_alias = None
                  if parent_category:
                      parent_alias = parent_category.alias
                  if parent_alias not in parent_to_children:
                      parent_to_children[parent_alias] = []
                  parent_to_children[parent_alias].append(category.id)
  
              cache_ = {
                  self.CACHE_NAME_IDS: ids,
                  self.CACHE_NAME_PARENTS: parent_to_children,
                  self.CACHE_NAME_ALIASES: aliases
              }
  
              cache.set(self.CACHE_ENTRY_NAME, cache_, self.CACHE_TIMEOUT)
  
          self._cache = cache_
docs: Initializes local cache from Django cache if required.