Code

Ticket #14648: 14648.1.diff

File 14648.1.diff, 1.6 KB (added by jbronn, 4 years ago)
Line 
1diff -r 49abe8cefc7b django/contrib/gis/db/models/sql/compiler.py
2--- a/django/contrib/gis/db/models/sql/compiler.py      Mon Nov 08 21:52:32 2010 +0000
3+++ b/django/contrib/gis/db/models/sql/compiler.py      Mon Nov 08 17:48:35 2010 -0600
4@@ -56,7 +56,7 @@
5                         col_aliases.add(col[1])
6                 else:
7                     result.append(col.as_sql(qn, self.connection))
8-                   
9+
10                     if hasattr(col, 'alias'):
11                         aliases.add(col.alias)
12                         col_aliases.add(col.alias)
13@@ -169,6 +169,8 @@
14         from extra selection SQL get resolved appropriately into Python
15         objects.
16         """
17+        if not hasattr(self.query, 'extra_select_fields'):
18+            return row
19         values = []
20         aliases = self.query.extra_select.keys()
21         if self.query.aggregates:
22@@ -190,6 +192,7 @@
23                                self.query.extra_select_fields.get(a, None),
24                                self.connection)
25                   for v, a in izip(row[rn_offset:index_start], aliases)]
26+
27         if self.connection.ops.oracle or getattr(self.query, 'geo_values', False):
28             # We resolve the rest of the columns if we're on Oracle or if
29             # the `geo_values` attribute is defined.
30@@ -202,7 +205,7 @@
31     #### Routines unique to GeoQuery ####
32     def get_extra_select_format(self, alias):
33         sel_fmt = '%s'
34-        if alias in self.query.custom_select:
35+        if alias in getattr(self.query, 'custom_select', {}):
36             sel_fmt = sel_fmt % self.query.custom_select[alias]
37         return sel_fmt
38