diff options
| author | Sergey Fedoseev <fedoseev.sergey@gmail.com> | 2015-11-09 11:33:40 +0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-12-07 14:16:29 -0500 |
| commit | f909fa84bedb51778a175aadfe4cfe7a91fe06cd (patch) | |
| tree | 1d63f723e878e0839632384d01375dcef94ccdf8 /django | |
| parent | 4a246a02bdcbc13b15480c014f51cb0682af7c1e (diff) | |
Fixed #25708 -- Fixed annotations with geometry values.
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/gis/db/models/fields.py | 6 | ||||
| -rw-r--r-- | django/db/models/expressions.py | 2 |
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 |
