'Add the given (model) fields to the select set. Add the field names in
the order specified.'

def add_fields(self, field_names, allow_m2m=True):

    alias = self.get_initial_alias()
    opts = self.get_meta()
    try:
        cols = []
        for name in field_names:
            join_info = self.setup_joins(name.split(LOOKUP_SEP), opts, alias, allow_many=allow_m2m)
            (targets, final_alias, joins) = self.trim_joins(join_info.targets, join_info.joins, join_info.path)
            for target in targets:
                cols.append(target.get_col(final_alias))
        if cols:
            self.set_select(cols)
    except MultiJoin:
        raise FieldError(("Invalid    field    name:    '%s'" % name))
    except FieldError:
        if (LOOKUP_SEP in name):
            raise
        else:
            names = sorted(((list(get_field_names_from_opts(opts)) + list(self.extra)) + list(self.annotation_select)))
            raise FieldError(('Cannot    resolve    keyword    %r    into    field.    Choices    are:    %s' % (name, ',    '.join(names))))
