def get_default_columns(self, start_alias=None, opts=None, from_parent=None):
    '\n        Computes the default columns for selecting every field in the base\n        model. Will sometimes be called to pull in related models (e.g. via\n        select_related), in which case "opts" and "start_alias" will be given\n        to provide a starting point for the traversal.\n\n        Returns a list of strings, quoted appropriately for use in SQL\n        directly, as well as a set of aliases used in the select statement (if\n        \'as_pairs\' is True, returns a list of (alias, col_name) pairs instead\n        of strings as the first component and None as the second component).\n        '
    result = []
    if (opts is None):
        opts = self.query.get_meta()
    only_load = self.deferred_to_columns()
    if (not start_alias):
        start_alias = self.query.get_initial_alias()
    seen_models = {None: start_alias}
    for field in opts.concrete_fields:
        model = field.model._meta.concrete_model
        if (model == opts.model):
            model = None
        if (from_parent and (model is not None) and issubclass(from_parent._meta.concrete_model, model._meta.concrete_model)):
            continue
        if ((field.model in only_load) and (field.attname not in only_load[field.model])):
            continue
        alias = self.query.join_parent_model(opts, model, start_alias, seen_models)
        column = field.get_col(alias)
        result.append(column)
    return result
Computes the default columns for selecting every field in the base
model. Will sometimes be called to pull in related models (e.g. via
select_related), in which case "opts" and "start_alias" will be given
to provide a starting point for the traversal.

Returns a list of strings, quoted appropriately for use in SQL
directly, as well as a set of aliases used in the select statement (if
'as_pairs' is True, returns a list of (alias, col_name) pairs instead
of strings as the first component and None as the second component).
def get_default_columns(self, start_alias=None, opts=None, from_parent=None):
    '\n        Computes the default columns for selecting every field in the base\n        model. Will sometimes be called to pull in related models (e.g. via\n        select_related), in which case "opts" and "start_alias" will be given\n        to provide a starting point for the traversal.\n\n        Returns a list of strings, quoted appropriately for use in SQL\n        directly, as well as a set of aliases used in the select statement (if\n        \'as_pairs\' is True, returns a list of (alias, col_name) pairs instead\n        of strings as the first component and None as the second component).\n        '
    result = []
    if (opts is None):
        opts = self.query.get_meta()
    only_load = self.deferred_to_columns()
    if (not start_alias):
        start_alias = self.query.get_initial_alias()
    seen_models = {None: start_alias}
    for field in opts.concrete_fields:
        model = field.model._meta.concrete_model
        if (model == opts.model):
            model = None
        if (from_parent and (model is not None) and issubclass(from_parent._meta.concrete_model, model._meta.concrete_model)):
            continue
        if ((field.model in only_load) and (field.attname not in only_load[field.model])):
            continue
        alias = self.query.join_parent_model(opts, model, start_alias, seen_models)
        column = field.get_col(alias)
        result.append(column)
    return result