diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/gis/db/backends/base/adapter.py | 3 | ||||
| -rw-r--r-- | django/contrib/gis/db/backends/postgis/adapter.py | 3 | ||||
| -rw-r--r-- | django/db/models/sql/compiler.py | 7 |
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 |
