From 8a281aa7fe76a9da2284f943964a9413697cff1f Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Wed, 7 Aug 2019 12:54:40 -0400 Subject: Fixed #30687 -- Fixed using of OuterRef() expressions in distance lookups. --- tests/gis_tests/distapp/tests.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/gis_tests/distapp/tests.py b/tests/gis_tests/distapp/tests.py index 67558582dc..d84e829868 100644 --- a/tests/gis_tests/distapp/tests.py +++ b/tests/gis_tests/distapp/tests.py @@ -6,7 +6,7 @@ from django.contrib.gis.db.models.functions import ( from django.contrib.gis.geos import GEOSGeometry, LineString, Point from django.contrib.gis.measure import D # alias for Distance from django.db import NotSupportedError, connection -from django.db.models import F, Q +from django.db.models import Exists, F, OuterRef, Q from django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature from ..utils import ( @@ -224,6 +224,16 @@ class DistanceTest(TestCase): with self.assertRaisesMessage(ValueError, msg): AustraliaCity.objects.filter(point__distance_lte=(Point(0, 0), D(m=100))).exists() + @skipUnlessDBFeature('supports_dwithin_lookup') + def test_dwithin_subquery(self): + """dwithin lookup in a subquery using OuterRef as a parameter.""" + qs = CensusZipcode.objects.annotate( + annotated_value=Exists(SouthTexasCity.objects.filter( + point__dwithin=(OuterRef('poly'), D(m=10)), + )) + ).filter(annotated_value=True) + self.assertEqual(self.get_names(qs), ['77002', '77025', '77401']) + ''' ============================= -- cgit v1.3