def _query_select_options(self, query, select_columns=None):
if select_columns:<EOL><INDENT>_load_options = list()<EOL>for column in select_columns:<EOL><INDENT>if "<STR_LIT:.>" in column:<EOL><INDENT>model_relation = self.get_related_model(column.split("<STR_LIT:.>")[<NUM_LIT:0>])<EOL>if not self.is_model_already_joinded(query, model_relation):<EOL><INDENT>query = query.join(model_relation)<EOL><DEDENT>_load_options.append(<EOL>Load(model_relation).load_only(column.split("<STR_LIT:.>")[<NUM_LIT:1>])<EOL>)<EOL><DEDENT>else:<EOL><INDENT>if not self.is_relation(column) and not hasattr(<EOL>getattr(self.obj, column), "<STR_LIT>"<EOL>):<EOL><INDENT>_load_options.append(Load(self.obj).load_only(column))<EOL><DEDENT>else:<EOL><INDENT>_load_options.append(Load(self.obj))<EOL><DEDENT><DEDENT><DEDENT>query = query.options(*tuple(_load_options))<EOL><DEDENT>return query<EOL>
Add select load options to query. The goal
    is to only SQL select what is requested

:param query: SQLAlchemy Query obj
:param select_columns: (list) of columns
:return: SQLAlchemy Query obj