mirror of https://github.com/django/django.git
Fixed #27603 -- Fixed AsKML when queryset is evaluated more than once.
This commit is contained in:
parent
7e09fa7f51
commit
e9149d3eb0
|
@ -195,8 +195,9 @@ class AsGML(GeoFunc):
|
||||||
class AsKML(AsGML):
|
class AsKML(AsGML):
|
||||||
def as_sqlite(self, compiler, connection):
|
def as_sqlite(self, compiler, connection):
|
||||||
# No version parameter
|
# No version parameter
|
||||||
self.source_expressions.pop(0)
|
clone = self.copy()
|
||||||
return super().as_sql(compiler, connection)
|
clone.set_source_expressions(self.get_source_expressions()[1:])
|
||||||
|
return clone.as_sql(compiler, connection)
|
||||||
|
|
||||||
|
|
||||||
class AsSVG(GeoFunc):
|
class AsSVG(GeoFunc):
|
||||||
|
|
|
@ -118,8 +118,11 @@ class GISFunctionsTests(TestCase):
|
||||||
City.objects.annotate(kml=functions.AsKML('name'))
|
City.objects.annotate(kml=functions.AsKML('name'))
|
||||||
|
|
||||||
# Ensuring the KML is as expected.
|
# Ensuring the KML is as expected.
|
||||||
ptown = City.objects.annotate(kml=functions.AsKML('point', precision=9)).get(name='Pueblo')
|
qs = City.objects.annotate(kml=functions.AsKML('point', precision=9))
|
||||||
|
ptown = qs.get(name='Pueblo')
|
||||||
self.assertEqual('<Point><coordinates>-104.609252,38.255001</coordinates></Point>', ptown.kml)
|
self.assertEqual('<Point><coordinates>-104.609252,38.255001</coordinates></Point>', ptown.kml)
|
||||||
|
# Same result if the queryset is evaluated again.
|
||||||
|
self.assertEqual(qs.get(name='Pueblo').kml, ptown.kml)
|
||||||
|
|
||||||
@skipUnlessDBFeature("has_AsSVG_function")
|
@skipUnlessDBFeature("has_AsSVG_function")
|
||||||
def test_assvg(self):
|
def test_assvg(self):
|
||||||
|
|
Loading…
Reference in New Issue