diff --git a/django/contrib/gis/static/gis/js/OLMapWidget.js b/django/contrib/gis/static/gis/js/OLMapWidget.js index bea4aab863..50860650f9 100644 --- a/django/contrib/gis/static/gis/js/OLMapWidget.js +++ b/django/contrib/gis/static/gis/js/OLMapWidget.js @@ -266,8 +266,10 @@ function initMapWidgetInSection(section) { if (wrapper.id.includes('__prefix__')) { return; } - const options = JSON.parse(wrapper.querySelector("#mapwidget-options").textContent); - options.id = wrapper.querySelector("textarea").id; + const textarea_id = wrapper.querySelector("textarea").id; + const options_script = wrapper.querySelector(`script#${textarea_id}_mapwidget_options`); + const options = JSON.parse(options_script.textContent); + options.id = textarea_id; options.map_id = wrapper.querySelector(".dj_map").id; maps.push(new MapWidget(options)); }); diff --git a/django/contrib/gis/templates/gis/openlayers.html b/django/contrib/gis/templates/gis/openlayers.html index 80fa57934b..ab52d3f11e 100644 --- a/django/contrib/gis/templates/gis/openlayers.html +++ b/django/contrib/gis/templates/gis/openlayers.html @@ -6,5 +6,7 @@ {% if widget.attrs.display_raw %}

{% translate "Debugging window (serialized value)" %}

{% endif %} - {{ widget.attrs|json_script:"mapwidget-options" }} + {% with script_id=widget.attrs.id|add:"_mapwidget_options" %} + {{ widget.attrs|json_script:script_id }} + {% endwith %} diff --git a/js_tests/gis/mapwidget.test.js b/js_tests/gis/mapwidget.test.js index 723c63d22b..4f2f3bb91c 100644 --- a/js_tests/gis/mapwidget.test.js +++ b/js_tests/gis/mapwidget.test.js @@ -142,7 +142,7 @@ QUnit.test('initMapWidgetInSection initializes widgets and skips __prefix__', fu wrapper1.innerHTML = `
- `; @@ -154,7 +154,7 @@ QUnit.test('initMapWidgetInSection initializes widgets and skips __prefix__', fu wrapper2.innerHTML = `
- `; diff --git a/tests/gis_tests/test_geoforms.py b/tests/gis_tests/test_geoforms.py index 2a1f585906..753505fc68 100644 --- a/tests/gis_tests/test_geoforms.py +++ b/tests/gis_tests/test_geoforms.py @@ -214,7 +214,7 @@ class GeometryFieldTest(SimpleTestCase): "id": "id_p", "geom_name": "Point", } - expected = json_script(attrs, "mapwidget-options") + expected = json_script(attrs, "id_p_mapwidget_options") self.assertInHTML(expected, rendered) @@ -305,7 +305,7 @@ class SpecializedFieldTest(SimpleTestCase): "id": map_field.id_for_label, "geom_name": geom_name, } - expected = json_script(attrs, "mapwidget-options") + expected = json_script(attrs, f"{map_field.id_for_label}_mapwidget_options") self.assertInHTML(expected, rendered) self.assertIn("gis/js/OLMapWidget.js", str(form_instance.media)) @@ -475,7 +475,7 @@ class OSMWidgetTest(SimpleTestCase): "id": "id_p", "geom_name": "Point", } - expected = json_script(attrs, "mapwidget-options") + expected = json_script(attrs, "id_p_mapwidget_options") self.assertInHTML(expected, rendered)