summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorSergey Fedoseev <fedoseev.sergey@gmail.com>2015-11-09 11:33:40 +0500
committerTim Graham <timograham@gmail.com>2016-12-07 14:16:29 -0500
commitf909fa84bedb51778a175aadfe4cfe7a91fe06cd (patch)
tree1d63f723e878e0839632384d01375dcef94ccdf8 /django
parent4a246a02bdcbc13b15480c014f51cb0682af7c1e (diff)
Fixed #25708 -- Fixed annotations with geometry values.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/gis/db/models/fields.py6
-rw-r--r--django/db/models/expressions.py2
2 files changed, 8 insertions, 0 deletions
diff --git a/django/contrib/gis/db/models/fields.py b/django/contrib/gis/db/models/fields.py
index 7519b30fb2..4ded5b1b4e 100644
--- a/django/contrib/gis/db/models/fields.py
+++ b/django/contrib/gis/db/models/fields.py
@@ -312,6 +312,12 @@ class GeometryField(GeoSelectFormatMixin, BaseSpatialField):
"""
return connection.ops.get_distance(self, value, lookup_type)
+ def get_db_prep_value(self, value, connection, *args, **kwargs):
+ return connection.ops.Adapter(
+ super(GeometryField, self).get_db_prep_value(value, connection, *args, **kwargs),
+ **({'geography': True} if self.geography else {})
+ )
+
def from_db_value(self, value, expression, connection, context):
if value:
if not isinstance(value, Geometry):
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py
index ce685203ea..6bfbc36534 100644
--- a/django/db/models/expressions.py
+++ b/django/db/models/expressions.py
@@ -579,6 +579,8 @@ class Value(Expression):
val = self.output_field.get_db_prep_save(val, connection=connection)
else:
val = self.output_field.get_db_prep_value(val, connection=connection)
+ if hasattr(self._output_field, 'get_placeholder'):
+ return self._output_field.get_placeholder(val, compiler, connection), [val]
if val is None:
# cx_Oracle does not always convert None to the appropriate
# NULL type (like in case expressions using numbers), so we