summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2026-04-04 18:02:17 -0400
committerJacob Walls <jacobtylerwalls@gmail.com>2026-04-06 13:04:33 -0400
commit33bfc66add643f49d466c5a646989ad91677753d (patch)
tree48f5796d48bebdd6b0fb5f4bc8b88272492cee23
parenteb244b011716d62b22dbca45f0a621a6192cad67 (diff)
Fixed #37023 -- Made XML serializer put each ManyToManyField object on its own line.
-rw-r--r--django/core/serializers/xml_serializer.py8
-rw-r--r--tests/serializers/test_xml.py5
2 files changed, 11 insertions, 2 deletions
diff --git a/django/core/serializers/xml_serializer.py b/django/core/serializers/xml_serializer.py
index 82a345d57f..5dfbb76a01 100644
--- a/django/core/serializers/xml_serializer.py
+++ b/django/core/serializers/xml_serializer.py
@@ -199,6 +199,8 @@ class Serializer(base.Serializer):
else:
def handle_m2m(value):
+ # Put each object on its own line.
+ self.indent(self.indent_level + 1)
self.xml.addQuickElement("object", attrs={"pk": str(value.pk)})
def queryset_iterator(obj, field):
@@ -217,9 +219,13 @@ class Serializer(base.Serializer):
field.name,
queryset_iterator(obj, field),
)
+ relobj = None
for relobj in m2m_iter:
handle_m2m(relobj)
-
+ if relobj:
+ # If there are related objects (which appear each on their own
+ # line), put the closing </field> on the next line.
+ self.indent(self.indent_level)
self.xml.endElement("field")
self.indent_level -= 1
diff --git a/tests/serializers/test_xml.py b/tests/serializers/test_xml.py
index 0ae66f77d0..884746dfac 100644
--- a/tests/serializers/test_xml.py
+++ b/tests/serializers/test_xml.py
@@ -24,7 +24,10 @@ class XmlSerializerTestCase(SerializersTestBase, TestCase):
<field name="author" rel="ManyToOneRel" to="serializers.author">%(author_pk)s</field>
<field name="headline" type="CharField">Poker has no place on ESPN</field>
<field name="pub_date" type="DateTimeField">2006-06-16T11:00:00</field>
- <field name="categories" rel="ManyToManyRel" to="serializers.category"><object pk="%(first_category_pk)s"></object><object pk="%(second_category_pk)s"></object></field>
+ <field name="categories" rel="ManyToManyRel" to="serializers.category">
+ <object pk="%(first_category_pk)s"></object>
+ <object pk="%(second_category_pk)s"></object>
+ </field>
<field name="meta_data" rel="ManyToManyRel" to="serializers.categorymetadata"></field>
<field name="topics" rel="ManyToManyRel" to="serializers.topic"></field>
</object>