diff options
| author | Tim Graham <timograham@gmail.com> | 2026-04-04 18:02:17 -0400 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2026-04-06 13:04:33 -0400 |
| commit | 33bfc66add643f49d466c5a646989ad91677753d (patch) | |
| tree | 48f5796d48bebdd6b0fb5f4bc8b88272492cee23 | |
| parent | eb244b011716d62b22dbca45f0a621a6192cad67 (diff) | |
Fixed #37023 -- Made XML serializer put each ManyToManyField object on its own line.
| -rw-r--r-- | django/core/serializers/xml_serializer.py | 8 | ||||
| -rw-r--r-- | tests/serializers/test_xml.py | 5 |
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> |
