<feed xmlns='http://www.w3.org/2005/Atom'>
<title>django.git/django/db/models/query_utils.py, branch fix-31295</title>
<subtitle>django
</subtitle>
<id>http://cgit.adnoto.dev/django.git/atom?h=fix-31295</id>
<link rel='self' href='http://cgit.adnoto.dev/django.git/atom?h=fix-31295'/>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/'/>
<updated>2026-04-28T10:42:49Z</updated>
<entry>
<title>Fixed #36912 -- Added connector validation to Q.create().</title>
<updated>2026-04-28T10:42:49Z</updated>
<author>
<name>Anna Makarudze</name>
<email>amakarudze@gmail.com</email>
</author>
<published>2026-03-21T18:49:02Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=fb292a549371a7c011c25b1a10fe5d25c579814a'/>
<id>urn:sha1:fb292a549371a7c011c25b1a10fe5d25c579814a</id>
<content type='text'>
Co-authored-by: Jacob Walls &lt;jacobtylerwalls@gmail.com&gt;
</content>
</entry>
<entry>
<title>Fixed #37057 -- Adjusted UniqueConstraint handling of UNKNOWN condition.</title>
<updated>2026-04-22T21:28:35Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2026-04-22T15:46:49Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=61a62be313e395ce1265132bfc99f51476fb3c95'/>
<id>urn:sha1:61a62be313e395ce1265132bfc99f51476fb3c95</id>
<content type='text'>
When we adjusted UNKNOWN handling for CheckConstraint in refs #33996 we assumed
that all usage of Q.check would benefit from this approach.

However while CHECK constraints enforcement do ignore conditions involving NULL
that resolve to UNKNOWN it's not the case for other type of constraints such as
UNIQUE ones.

Given how UNKNOWN should be treated depends on the callers context it appears
that a better strategy for COALESCE wrapping is to force them to apply it if
necessary.

Thanks Drew Shapiro for the report.
</content>
</entry>
<entry>
<title>Fixed #37036 -- Added missing flat=True arg in DeferredAttribute.fetch_many().</title>
<updated>2026-04-18T13:39:50Z</updated>
<author>
<name>garybadwal</name>
<email>gurpreet071999@gmail.com</email>
</author>
<published>2026-04-16T06:16:13Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=820c7d3248af6afbdf3390c97b29e41ba126a421'/>
<id>urn:sha1:820c7d3248af6afbdf3390c97b29e41ba126a421</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed #37016 -- Avoided propagating invalid arguments from When() to Q().</title>
<updated>2026-04-03T13:37:32Z</updated>
<author>
<name>varunkasyap</name>
<email>varunkasyap@hotmail.com</email>
</author>
<published>2026-04-02T09:26:45Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=3b161e60964aff99eddcd2627a486d81c1836b3a'/>
<id>urn:sha1:3b161e60964aff99eddcd2627a486d81c1836b3a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed CVE-2025-64459 -- Prevented SQL injections in Q/QuerySet via the _connector kwarg.</title>
<updated>2025-11-05T12:20:57Z</updated>
<author>
<name>Jacob Walls</name>
<email>jacobtylerwalls@gmail.com</email>
</author>
<published>2025-09-24T19:54:51Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=98e642c69181c942d60a10ca0085d48c6b3068bb'/>
<id>urn:sha1:98e642c69181c942d60a10ca0085d48c6b3068bb</id>
<content type='text'>
Thanks cyberstan for the report, Sarah Boyce, Adam Johnson, Simon
Charette, and Jake Howard for the reviews.
</content>
</entry>
<entry>
<title>Fixed #28586 -- Added model field fetch modes.</title>
<updated>2025-10-16T18:52:22Z</updated>
<author>
<name>Adam Johnson</name>
<email>me@adamj.eu</email>
</author>
<published>2023-11-29T09:35:34Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=e097e8a12f21a4e92594830f1ad1942b31916d0f'/>
<id>urn:sha1:e097e8a12f21a4e92594830f1ad1942b31916d0f</id>
<content type='text'>
May your database queries be much reduced with minimal effort.

co-authored-by: Andreas Pelme &lt;andreas@pelme.se&gt;
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>Fixed #34871, #36518 -- Implemented unresolved lookups expression replacement.</title>
<updated>2025-08-04T07:22:53Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2025-02-19T08:04:16Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=079d31e698fa08dd92e2bc4f3fe9b4817a214419'/>
<id>urn:sha1:079d31e698fa08dd92e2bc4f3fe9b4817a214419</id>
<content type='text'>
This allows the proper resolving of lookups when performing constraint
validation involving Q and Case objects.

Thanks Andrew Roberts for the report and Sarah for the tests and review.
</content>
</entry>
<entry>
<title>Refs #36500 -- Rewrapped long docstrings and block comments via a script.</title>
<updated>2025-07-23T23:17:55Z</updated>
<author>
<name>django-bot</name>
<email>ops@djangoproject.com</email>
</author>
<published>2025-07-23T03:41:41Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=69a93a88edb56ba47f624dac7a21aacc47ea474f'/>
<id>urn:sha1:69a93a88edb56ba47f624dac7a21aacc47ea474f</id>
<content type='text'>
Rewrapped long docstrings and block comments to 79 characters + newline
using script from https://github.com/medmunds/autofix-w505.
</content>
</entry>
<entry>
<title>Fixed #33312 -- Raised explicit exception when copying deferred model instances.</title>
<updated>2025-05-16T06:13:57Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2025-05-06T17:57:20Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=e03e5c751c56db5f4cb99e142c92d7d8db3a5463'/>
<id>urn:sha1:e03e5c751c56db5f4cb99e142c92d7d8db3a5463</id>
<content type='text'>
Previously save() would crash with an attempted forced update message, and both
save(force_insert=True) and bulk_create() would crash with DoesNotExist errors
trying to retrieve rows with an empty primary key (id IS NULL).

Implementing deferred field model instance copying might be doable in certain
cases (e.g. when all the deferred fields are db generated) but that's not
trivial to implement in a backward compatible way.

Thanks Adam Sołtysik for the report and test and Clifford for the review.
</content>
</entry>
<entry>
<title>Refs #373 -- Added Model._is_pk_set() abstraction to check if a Model's PK is set.</title>
<updated>2024-09-09T20:46:50Z</updated>
<author>
<name>Csirmaz Bendegúz</name>
<email>csirmazbendeguz@gmail.com</email>
</author>
<published>2024-09-09T20:46:50Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=5865ff5adcf64da03d306dc32b36e87ae6927c85'/>
<id>urn:sha1:5865ff5adcf64da03d306dc32b36e87ae6927c85</id>
<content type='text'>
</content>
</entry>
</feed>
