Skip to content

Commit 33bfc66

Browse files
timgrahamjacobtylerwalls
authored andcommitted
Fixed #37023 -- Made XML serializer put each ManyToManyField object on its own line.
1 parent eb244b0 commit 33bfc66

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

django/core/serializers/xml_serializer.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,8 @@ def queryset_iterator(obj, field):
199199
else:
200200

201201
def handle_m2m(value):
202+
# Put each object on its own line.
203+
self.indent(self.indent_level + 1)
202204
self.xml.addQuickElement("object", attrs={"pk": str(value.pk)})
203205

204206
def queryset_iterator(obj, field):
@@ -217,9 +219,13 @@ def queryset_iterator(obj, field):
217219
field.name,
218220
queryset_iterator(obj, field),
219221
)
222+
relobj = None
220223
for relobj in m2m_iter:
221224
handle_m2m(relobj)
222-
225+
if relobj:
226+
# If there are related objects (which appear each on their own
227+
# line), put the closing </field> on the next line.
228+
self.indent(self.indent_level)
223229
self.xml.endElement("field")
224230
self.indent_level -= 1
225231

tests/serializers/test_xml.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ class XmlSerializerTestCase(SerializersTestBase, TestCase):
2424
<field name="author" rel="ManyToOneRel" to="serializers.author">%(author_pk)s</field>
2525
<field name="headline" type="CharField">Poker has no place on ESPN</field>
2626
<field name="pub_date" type="DateTimeField">2006-06-16T11:00:00</field>
27-
<field name="categories" rel="ManyToManyRel" to="serializers.category"><object pk="%(first_category_pk)s"></object><object pk="%(second_category_pk)s"></object></field>
27+
<field name="categories" rel="ManyToManyRel" to="serializers.category">
28+
<object pk="%(first_category_pk)s"></object>
29+
<object pk="%(second_category_pk)s"></object>
30+
</field>
2831
<field name="meta_data" rel="ManyToManyRel" to="serializers.categorymetadata"></field>
2932
<field name="topics" rel="ManyToManyRel" to="serializers.topic"></field>
3033
</object>

0 commit comments

Comments
 (0)