From fe042a604727441fe07bb711bc98d0edc519a25f Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Tue, 19 Jul 2011 21:28:12 +0200 Subject: [PATCH] select_related. Totally untested of course --- sqlalchemy_django_query.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sqlalchemy_django_query.py b/sqlalchemy_django_query.py index e9f4266..5eaabd0 100644 --- a/sqlalchemy_django_query.py +++ b/sqlalchemy_django_query.py @@ -18,6 +18,7 @@ :copyright: 2011 by Armin Ronacher, Mike Bayer. license: BSD, see LICENSE for more details. """ +from sqlalchemy.orm import joinedload, joinedload_all from sqlalchemy.orm.query import Query from sqlalchemy.orm.util import _entity_descriptor from sqlalchemy.util import to_list @@ -61,6 +62,12 @@ def filter_by(self, **kwargs): def exclude_by(self, **kwargs): return self._filter_or_exclude(True, kwargs) + def select_related(self, *columns): + if not columns: + return self.options(joinedload_all()) + columns = [x.replace('__', '.') for x in columns] + return self.options(joinedload(columns)) + def order_by(self, *args): args = list(args) joins_needed = []