<feed xmlns='http://www.w3.org/2005/Atom'>
<title>django.git/django/core/serializers/xml_serializer.py, branch main</title>
<subtitle>django
</subtitle>
<id>http://cgit.adnoto.dev/django.git/atom?h=main</id>
<link rel='self' href='http://cgit.adnoto.dev/django.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/'/>
<updated>2026-04-19T10:38:12Z</updated>
<entry>
<title>Added support for nested fields to XML deserializer.</title>
<updated>2026-04-19T10:38:12Z</updated>
<author>
<name>Tim Graham</name>
<email>timograham@gmail.com</email>
</author>
<published>2026-04-04T23:16:41Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=3af5cb17b83eaaea6d4def494269694c009d89c5'/>
<id>urn:sha1:3af5cb17b83eaaea6d4def494269694c009d89c5</id>
<content type='text'>
Needed by Django MongoDB Backend's EmbeddedModelField.
</content>
</entry>
<entry>
<title>Fixed #37023 -- Made XML serializer put each ManyToManyField object on its own line.</title>
<updated>2026-04-06T17:04:33Z</updated>
<author>
<name>Tim Graham</name>
<email>timograham@gmail.com</email>
</author>
<published>2026-04-04T22:02:17Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=33bfc66add643f49d466c5a646989ad91677753d'/>
<id>urn:sha1:33bfc66add643f49d466c5a646989ad91677753d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refs #37023 -- Removed hardcoded indent levels from XML serializer.</title>
<updated>2026-04-06T17:04:33Z</updated>
<author>
<name>Tim Graham</name>
<email>timograham@gmail.com</email>
</author>
<published>2026-04-04T21:58:05Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=eb244b011716d62b22dbca45f0a621a6192cad67'/>
<id>urn:sha1:eb244b011716d62b22dbca45f0a621a6192cad67</id>
<content type='text'>
This facilitates nested fields and objects.
</content>
</entry>
<entry>
<title>Fixed #36750 -- Made ordering of M2M objects deterministic in serializers.</title>
<updated>2026-02-26T12:46:35Z</updated>
<author>
<name>VIZZARD-X</name>
<email>vigneshanandmay13@gmail.com</email>
</author>
<published>2025-12-27T08:24:14Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=e6108b7388775f4996a5906e0525fbdd40d2df51'/>
<id>urn:sha1:e6108b7388775f4996a5906e0525fbdd40d2df51</id>
<content type='text'>
Co-authored-by: Simon Charette &lt;charette.s@gmail.com&gt;
Co-authored-by: Jacob Walls &lt;jacobtylerwalls@gmail.com&gt;
</content>
</entry>
<entry>
<title>Refs #36769 -- Raised SuspiciousOperation for unexpected nested tags in XML Deserializer.</title>
<updated>2026-01-12T21:38:32Z</updated>
<author>
<name>Jacob Walls</name>
<email>jacobtylerwalls@gmail.com</email>
</author>
<published>2026-01-07T21:23:48Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=73c5e94521c5b97e27cd2fe2d5b5c2e65f402755'/>
<id>urn:sha1:73c5e94521c5b97e27cd2fe2d5b5c2e65f402755</id>
<content type='text'>
Thanks Shai Berger and Natalia Bidart for reviews.
</content>
</entry>
<entry>
<title>Refs #36769 -- Avoided visiting grandchild nodes in XML Deserializer.</title>
<updated>2026-01-12T21:38:32Z</updated>
<author>
<name>Jacob Walls</name>
<email>jacobtylerwalls@gmail.com</email>
</author>
<published>2026-01-07T21:23:32Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=a25158f5cc590f3dff4226c3a48257481e6e67a6'/>
<id>urn:sha1:a25158f5cc590f3dff4226c3a48257481e6e67a6</id>
<content type='text'>
The only use case for visiting grandchild nodes turned out to be to
support an unintentionally invalid fixture in the test suite.

The invalid fixture added in #36969 was modeled on fixture9.xml in
dae08cf55b83caef5e8ee39b16417692e8565278, so that is corrected as well
in this commit, where the test will still pass.
</content>
</entry>
<entry>
<title>Fixed #36786 -- Fixed XML serialization of None values in natural keys.</title>
<updated>2025-12-22T19:21:01Z</updated>
<author>
<name>Youngkwang Yang</name>
<email>me@youngkwang.dev</email>
</author>
<published>2025-12-18T04:49:13Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=95394443bff2cd6c5cb47c752422fe1f391bb43d'/>
<id>urn:sha1:95394443bff2cd6c5cb47c752422fe1f391bb43d</id>
<content type='text'>
None values in natural keys were incorrectly serialized as the string
"None", causing deserialization to fail for fields like UUIDField.
</content>
</entry>
<entry>
<title>Fixed #36769 -- Avoided visiting deeply nested nodes in XML deserializer.</title>
<updated>2025-12-11T17:38:04Z</updated>
<author>
<name>Pravin Kamble</name>
<email>iampbkamble@gmail.com</email>
</author>
<published>2025-12-09T06:27:52Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=dae08cf55b83caef5e8ee39b16417692e8565278'/>
<id>urn:sha1:dae08cf55b83caef5e8ee39b16417692e8565278</id>
<content type='text'>
Only children at one level of depth need to be visited.

Co-authored-by: Jacob Walls &lt;jacobtylerwalls@gmail.com&gt;
</content>
</entry>
<entry>
<title>Fixed #35729 -- Enabled natural key serialization opt-out for subclasses.</title>
<updated>2025-12-03T20:04:52Z</updated>
<author>
<name>rimi0108</name>
<email>hyerimc858@gmail.com</email>
</author>
<published>2025-10-04T04:52:59Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=93540b34d4ef46f68df2c8bfe90447d0f649a852'/>
<id>urn:sha1:93540b34d4ef46f68df2c8bfe90447d0f649a852</id>
<content type='text'>
Refactored serialization logic to allow models inheriting a natural_key()
method (e.g. AbstractBaseUser) to explicitly opt out of natural key
serialization by returning an empty tuple from the method.

Thanks Jonas Dittrich for the report.

Co-authored-by: Jacob Walls &lt;jacobtylerwalls@gmail.com&gt;
</content>
</entry>
<entry>
<title>Fixed CVE-2025-64460 -- Corrected quadratic inner text accumulation in XML serializer.</title>
<updated>2025-12-02T12:21:07Z</updated>
<author>
<name>Shai Berger</name>
<email>shai@platonix.com</email>
</author>
<published>2025-10-11T18:42:56Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=50efb718b31333051bc2dcb06911b8fa1358c98c'/>
<id>urn:sha1:50efb718b31333051bc2dcb06911b8fa1358c98c</id>
<content type='text'>
Previously, `getInnerText()` recursively used `list.extend()` on strings,
which added each character from child nodes as a separate list element.
On deeply nested XML content, this caused the overall deserialization
work to grow quadratically with input size, potentially allowing
disproportionate CPU consumption for crafted XML.

The fix separates collection of inner texts from joining them, so that
each subtree is joined only once, reducing the complexity to linear in
the size of the input. These changes also include a mitigation for a
xml.dom.minidom performance issue.

Thanks Seokchan Yoon (https://ch4n3.kr/) for report.

Co-authored-by: Jacob Walls &lt;jacobtylerwalls@gmail.com&gt;
Co-authored-by: Natalia &lt;124304+nessita@users.noreply.github.com&gt;
</content>
</entry>
</feed>
