summaryrefslogtreecommitdiff
path: root/django/db/models/sql/datastructures.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/db/models/sql/datastructures.py')
-rw-r--r--django/db/models/sql/datastructures.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/django/db/models/sql/datastructures.py b/django/db/models/sql/datastructures.py
index f45ecaf76d..421c3cd860 100644
--- a/django/db/models/sql/datastructures.py
+++ b/django/db/models/sql/datastructures.py
@@ -5,18 +5,27 @@ the SQL domain.
class Col(object):
- def __init__(self, alias, col):
- self.alias = alias
- self.col = col
+ def __init__(self, alias, target, source):
+ self.alias, self.target, self.source = alias, target, source
def as_sql(self, qn, connection):
- return '%s.%s' % (qn(self.alias), self.col), []
+ return "%s.%s" % (qn(self.alias), qn(self.target.column)), []
- def prepare(self):
- return self
+ @property
+ def output_type(self):
+ return self.source
def relabeled_clone(self, relabels):
- return self.__class__(relabels.get(self.alias, self.alias), self.col)
+ return self.__class__(relabels.get(self.alias, self.alias), self.target, self.source)
+
+ def get_group_by_cols(self):
+ return [(self.alias, self.target.column)]
+
+ def get_lookup(self, name):
+ return self.output_type.get_lookup(name)
+
+ def prepare(self):
+ return self
class EmptyResultSet(Exception):