(self, model, levels=None)
return LOOKUP_SEP.join(ancestry)
Serves as an opposite to _get_subclasses_recurse, instead walking from
        the Model class up the Model's ancestry and constructing the desired
        select_related string backwards.
Serves as an opposite to _get_subclasses_recurse, instead walking from
        the Model class up the Model's ancestry and constructing the desired
        select_related string backwards.
Serves as an opposite to _get_subclasses_recurse instead walking from the Model class up the Model s ancestry and constructing the desired select_related string backwards .
def _get_ancestors_path(self, model, levels=None):
        """
        Serves as an opposite to _get_subclasses_recurse, instead walking from
        the Model class up the Model's ancestry and constructing the desired
        select_related string backwards.
        """
        if not issubclass(model, self.model):
            raise ValueError(
                "{!r} is not a subclass of {!r}".format(model, self.model))

        ancestry = []
        # should be a OneToOneField or None
        parent_link = model._meta.get_ancestor_link(self.model)
        if levels:
            levels -= 1
        while parent_link is not None:
            related = parent_link.remote_field
            ancestry.insert(0, related.get_accessor_name())
            if levels or levels is None:
                parent_model = related.model
                parent_link = parent_model._meta.get_ancestor_link(
                    self.model)
            else:
                parent_link = None
        return LOOKUP_SEP.join(ancestry)
def _get_ancestors_path ( self , model , levels = None ) : if not issubclass ( model , self . model ) : raise ValueError ( "{!r} is not a subclass of {!r}" . format ( model , self . model ) ) ancestry = [ ] # should be a OneToOneField or None parent_link = model . _meta . get_ancestor_link ( self . model ) if levels : levels -= 1 while parent_link is not None : related = parent_link . remote_field ancestry . insert ( 0 , related . get_accessor_name ( ) ) if levels or levels is None : parent_model = related . model parent_link = parent_model . _meta . get_ancestor_link ( self . model ) else : parent_link = None return LOOKUP_SEP . join ( ancestry )