summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Wiesmann <daniel.wiesmann@gmail.com>2016-08-15 18:18:48 +0100
committerTim Graham <timograham@gmail.com>2016-08-15 14:23:48 -0400
commit201198136da354541aed2e571168d343b55ac356 (patch)
treefa661452afc82c08a2610a0e6721695e2d56afaa
parent7d11d61087479c45d7cb23cbdfc32a47d84cdc05 (diff)
[1.10.x] Fixed #27014 -- Fixed annotations with database functions on PostGIS.
Thanks Sean Mc Allister for providing a test. Backport of 89f17e7caf0d1e70417253d135607c9fd6ebac56 from master
-rw-r--r--django/contrib/gis/db/backends/postgis/adapter.py2
-rw-r--r--docs/releases/1.10.1.txt3
-rw-r--r--tests/gis_tests/geogapp/tests.py3
3 files changed, 7 insertions, 1 deletions
diff --git a/django/contrib/gis/db/backends/postgis/adapter.py b/django/contrib/gis/db/backends/postgis/adapter.py
index 2d2d9578ec..9e107db6d6 100644
--- a/django/contrib/gis/db/backends/postgis/adapter.py
+++ b/django/contrib/gis/db/backends/postgis/adapter.py
@@ -15,7 +15,7 @@ class PostGISAdapter(object):
"""
Initialize on the spatial object.
"""
- self.is_geometry = isinstance(obj, Geometry)
+ self.is_geometry = isinstance(obj, (Geometry, PostGISAdapter))
# Getting the WKB (in string form, to allow easy pickling of
# the adaptor) and the SRID from the geometry or raster.
diff --git a/docs/releases/1.10.1.txt b/docs/releases/1.10.1.txt
index b834915701..fdc00861c6 100644
--- a/docs/releases/1.10.1.txt
+++ b/docs/releases/1.10.1.txt
@@ -48,3 +48,6 @@ Bugfixes
* Fixed ``ClearableFileInput`` to avoid the ``required`` HTML attribute when
initial data exists (:ticket:`27037`).
+
+* Fixed annotations with database functions when combined with lookups on
+ PostGIS (:ticket:`27014`).
diff --git a/tests/gis_tests/geogapp/tests.py b/tests/gis_tests/geogapp/tests.py
index 0711e26bc1..ba811aea8e 100644
--- a/tests/gis_tests/geogapp/tests.py
+++ b/tests/gis_tests/geogapp/tests.py
@@ -144,6 +144,9 @@ class GeographyFunctionTests(TestCase):
qs = Zipcode.objects.annotate(distance=Distance('poly', htown.point))
for z, ref in zip(qs, ref_dists):
self.assertAlmostEqual(z.distance.m, ref, 2)
+ # Distance function in combination with a lookup.
+ hzip = Zipcode.objects.get(code='77002')
+ self.assertEqual(qs.get(distance__lte=0), hzip)
@skipUnlessDBFeature("has_Area_function", "supports_distance_geodetic")
def test_geography_area(self):