diff --git a/django/contrib/gis/db/models/lookups.py b/django/contrib/gis/db/models/lookups.py index c34e3391e1..42089f64d2 100644 --- a/django/contrib/gis/db/models/lookups.py +++ b/django/contrib/gis/db/models/lookups.py @@ -306,7 +306,7 @@ class DistanceLookupBase(GISLookup): if not isinstance(self.rhs, (tuple, list)) or not 2 <= len(self.rhs) <= 4: raise ValueError("2, 3, or 4-element tuple required for '%s' lookup." % self.lookup_name) elif len(self.rhs) == 4 and not self.rhs[3] == 'spheroid': - raise ValueError("For 4-element tuples the last argument must be the 'speroid' directive.") + raise ValueError("For 4-element tuples the last argument must be the 'spheroid' directive.") # Check if the second parameter is a band index. if len(self.rhs) > 2 and not self.rhs[2] == 'spheroid': diff --git a/tests/gis_tests/distapp/tests.py b/tests/gis_tests/distapp/tests.py index 30dbf4d8e1..8b8fb90c8c 100644 --- a/tests/gis_tests/distapp/tests.py +++ b/tests/gis_tests/distapp/tests.py @@ -140,15 +140,17 @@ class DistanceTest(TestCase): expected_cities.pop(0) self.assertEqual(expected_cities, self.get_names(dist_qs)) - # Too many params (4 in this case) should raise a ValueError. - queryset = AustraliaCity.objects.filter(point__distance_lte=('POINT(5 23)', D(km=100), 'spheroid', '4')) - with self.assertRaises(ValueError): - len(queryset) + msg = "2, 3, or 4-element tuple required for 'distance_lte' lookup." + with self.assertRaisesMessage(ValueError, msg): # Too many params. + len(AustraliaCity.objects.filter(point__distance_lte=('POINT(5 23)', D(km=100), 'spheroid', '4', None))) - # Not enough params should raise a ValueError. - with self.assertRaises(ValueError): + with self.assertRaisesMessage(ValueError, msg): # Too few params. len(AustraliaCity.objects.filter(point__distance_lte=('POINT(5 23)',))) + msg = "For 4-element tuples the last argument must be the 'spheroid' directive." + with self.assertRaisesMessage(ValueError, msg): + len(AustraliaCity.objects.filter(point__distance_lte=('POINT(5 23)', D(km=100), 'spheroid', '4'))) + # Getting all cities w/in 550 miles of Hobart. hobart = AustraliaCity.objects.get(name='Hobart') qs = AustraliaCity.objects.exclude(name='Hobart').filter(point__distance_lte=(hobart.point, D(mi=550)))