'Sets the table from which to start joining. The start position is
specified by the related attribute from the base model. This will
automatically set to the select column to be the column linked from the
previous table.
This method is primarily for internal use and the error checking isn\'t
as friendly as add_filter(). Mostly useful for querying directly
against the join table of many-to-many relation in a subquery.'

def set_start(self, start):

    opts = self.model._meta
    alias = self.get_initial_alias()
    (field, col, opts, joins, last, extra) = self.setup_joins(start.split(LOOKUP_SEP), opts, alias, False)
    select_col = self.alias_map[joins[1]].lhs_join_col
    select_alias = alias
    for alias in joins:
        self.unref_alias(alias)
    for alias in joins[1:]:
        join_info = self.alias_map[alias]
        if ((join_info.lhs_join_col != select_col) or (join_info.join_type != self.INNER)):
            break
        self.unref_alias(select_alias)
        select_alias = join_info.rhs_alias
        select_col = join_info.rhs_join_col
    self.select = [(select_alias, select_col)]
    self.remove_inherited_models()
