summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
Diffstat (limited to 'django')
-rw-r--r--django/contrib/gis/db/backends/base/adapter.py3
-rw-r--r--django/contrib/gis/db/backends/postgis/adapter.py3
-rw-r--r--django/db/models/sql/compiler.py7
3 files changed, 13 insertions, 0 deletions
diff --git a/django/contrib/gis/db/backends/base/adapter.py b/django/contrib/gis/db/backends/base/adapter.py
index ca77124351..25f8846fa8 100644
--- a/django/contrib/gis/db/backends/base/adapter.py
+++ b/django/contrib/gis/db/backends/base/adapter.py
@@ -12,6 +12,9 @@ class WKTAdapter(object):
return False
return self.wkt == other.wkt and self.srid == other.srid
+ def __hash__(self):
+ return hash((self.wkt, self.srid))
+
def __str__(self):
return self.wkt
diff --git a/django/contrib/gis/db/backends/postgis/adapter.py b/django/contrib/gis/db/backends/postgis/adapter.py
index 172133693b..1fd0ee1cce 100644
--- a/django/contrib/gis/db/backends/postgis/adapter.py
+++ b/django/contrib/gis/db/backends/postgis/adapter.py
@@ -28,6 +28,9 @@ class PostGISAdapter(object):
return False
return (self.ewkb == other.ewkb) and (self.srid == other.srid)
+ def __hash__(self):
+ return hash((self.ewkb, self.srid))
+
def __str__(self):
return self.getquoted()
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py
index f1bb10e228..a695025167 100644
--- a/django/db/models/sql/compiler.py
+++ b/django/db/models/sql/compiler.py
@@ -253,10 +253,17 @@ class SQLCompiler(object):
descending = True if order == 'DESC' else False
if col in self.query.annotation_select:
+ # Reference to expression in SELECT clause
order_by.append((
OrderBy(Ref(col, self.query.annotation_select[col]), descending=descending),
True))
continue
+ if col in self.query.annotations:
+ # References to an expression which is masked out of the SELECT clause
+ order_by.append((
+ OrderBy(self.query.annotations[col], descending=descending),
+ False))
+ continue
if '.' in field:
# This came in through an extra(order_by=...) addition. Pass it