<feed xmlns='http://www.w3.org/2005/Atom'>
<title>django.git/django/db/models/fields/__init__.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-22T21:06:29Z</updated>
<entry>
<title>Fixed #35870 -- Made blank choice label in forms more accessible.</title>
<updated>2026-04-22T21:06:29Z</updated>
<author>
<name>Annabelle Wiegart</name>
<email>annabelle.wiegart@proton.me</email>
</author>
<published>2026-01-18T19:03:28Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=63c56cda133a85a158502891c40465bc0331d3d9'/>
<id>urn:sha1:63c56cda133a85a158502891c40465bc0331d3d9</id>
<content type='text'>
Added new constant django.db.models.fields.BLANK_CHOICE_LABEL for
an accessible and translatable blank choice label in forms.
Deprecated django.db.models.fields.BLANK_CHOICE_DASH constant.
Added the immediately deprecated transitional setting
USE_BLANK_CHOICE_DASH.

Co-Authored-By: Marijke Luttekes &lt;mail@marijkeluttekes.dev&gt;
</content>
</entry>
<entry>
<title>Fixed #36987 -- Observed prepared argument in UUIDField.get_db_prep_value().</title>
<updated>2026-03-18T12:22:29Z</updated>
<author>
<name>Jacob Walls</name>
<email>jacobtylerwalls@gmail.com</email>
</author>
<published>2026-03-13T21:06:34Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=2e33abe57c37dce6ce5eff9e6cbaf47cdddcf1e3'/>
<id>urn:sha1:2e33abe57c37dce6ce5eff9e6cbaf47cdddcf1e3</id>
<content type='text'>
This avoids two isinstance() calls per UUID value.
</content>
</entry>
<entry>
<title>Fixed #36927 -- Optimized Field.deconstruct().</title>
<updated>2026-03-13T20:29:10Z</updated>
<author>
<name>Adam Johnson</name>
<email>me@adamj.eu</email>
</author>
<published>2026-02-13T22:52:07Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=e779bc7d78cbcadd395d48e5b6b00acea07ce503'/>
<id>urn:sha1:e779bc7d78cbcadd395d48e5b6b00acea07ce503</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed #36727 -- Deprecated Field.get_placeholder in favor of get_placeholder_sql.</title>
<updated>2026-03-13T00:01:02Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2025-11-22T18:32:34Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=1a8fd5cf75bf855852f6bc2f75c3da9f7b145669'/>
<id>urn:sha1:1a8fd5cf75bf855852f6bc2f75c3da9f7b145669</id>
<content type='text'>
The lack of ability of the get_placeholder call chain to return SQL and
parameters separated so they can be mogrified by the backend at execution time
forced implementations to dangerously interpolate potentially user controlled
values.

The get_placeholder_sql name was chosen due to its proximity to the previous
method, but other options such as Field.as_sql were considered but ultimately
rejected due to its different input signature compared to Expression.as_sql
that might have lead to confusion.

There is a lot of overlap between what Field.get_db_prep_value and
get_placeholder_sql do but folding the latter in the former would require
changing its return signature to return expression which is a way more invasive
change than what is proposed here.

Given we always call get_db_prep_value it might still be an avenue worth
exploring in the future to offer a publicly documented interface to allow field
to take an active part in the compilation chain.

Thanks Jacob for the review.
</content>
</entry>
<entry>
<title>Fixed #36858 -- Optimized `Field._get_default()` for `db_default` case.</title>
<updated>2026-01-12T19:05:04Z</updated>
<author>
<name>Adam Johnson</name>
<email>me@adamj.eu</email>
</author>
<published>2026-01-11T23:25:44Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=2b192bff26cf956c168790fce6a637cbd814250b'/>
<id>urn:sha1:2b192bff26cf956c168790fce6a637cbd814250b</id>
<content type='text'>
Create and share a single instance of `DatabaseDefault` instead of making a new
one each time the lambda is called. The quick benchmark on the ticket shows a
~12% speedup for a large `bulk_create()` operation.
</content>
</entry>
<entry>
<title>Refs #24920 -- Made DecimalField system checks database dependent.</title>
<updated>2025-12-28T18:21:49Z</updated>
<author>
<name>Mariusz Felisiak</name>
<email>felisiak.mariusz@gmail.com</email>
</author>
<published>2025-12-28T18:21:49Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=1c34b8716afde049f95ad1c72c2f8e148f826662'/>
<id>urn:sha1:1c34b8716afde049f95ad1c72c2f8e148f826662</id>
<content type='text'>
Thanks Tim Graham for the suggestion.</content>
</entry>
<entry>
<title>Fixed #36722 -- Moved AutoFieldMixin validate_autopk_value() check to get_db_prep_save.</title>
<updated>2025-12-05T14:35:15Z</updated>
<author>
<name>Clifford Gama</name>
<email>cliffygamy@gmail.com</email>
</author>
<published>2025-11-10T11:28:07Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=55888655a269f41025405b9a1bff14117ae58e2a'/>
<id>urn:sha1:55888655a269f41025405b9a1bff14117ae58e2a</id>
<content type='text'>
The validation in validate_autopk_value is specific to saving. Having it in
get_db_prep_value caused Value(0, AutoField()) to fail unexpectedly when used
in a filter on MySQL.

Thanks Jacob Walls for the review.
</content>
</entry>
<entry>
<title>Fixed #26609 -- Extended fields.E004 system check for unordered iterables.</title>
<updated>2025-11-19T07:22:44Z</updated>
<author>
<name>Mariusz Felisiak</name>
<email>felisiak.mariusz@gmail.com</email>
</author>
<published>2025-11-19T07:22:44Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=97acd4d2f92eef8c285bac070d437bf0fd52e071'/>
<id>urn:sha1:97acd4d2f92eef8c285bac070d437bf0fd52e071</id>
<content type='text'>
Co-authored-by: Karl Wooster &lt;karl.wooster@alleima.com&gt;</content>
</entry>
<entry>
<title>Fixed #24920 -- Added support for DecimalField with no precision.</title>
<updated>2025-11-17T12:43:47Z</updated>
<author>
<name>Mariusz Felisiak</name>
<email>felisiak.mariusz@gmail.com</email>
</author>
<published>2025-11-17T12:43:47Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=1ce6e78dd4beed702f15fa0be798dd17a15d4ba8'/>
<id>urn:sha1:1ce6e78dd4beed702f15fa0be798dd17a15d4ba8</id>
<content type='text'>
Thanks Lily for the review.</content>
</entry>
<entry>
<title>Fixed #21961 -- Added support for database-level delete options for ForeignKey.</title>
<updated>2025-10-18T13:03:50Z</updated>
<author>
<name>Mariusz Felisiak</name>
<email>felisiak.mariusz@gmail.com</email>
</author>
<published>2025-10-18T13:03:50Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=0c487aa3a7b2417481bf48c1e5355c855873e210'/>
<id>urn:sha1:0c487aa3a7b2417481bf48c1e5355c855873e210</id>
<content type='text'>
Thanks Simon Charette for pair programming.

Co-authored-by: Nick Stefan &lt;NickStefan12@gmail.com&gt;
Co-authored-by: Akash Kumar Sen &lt;71623442+Akash-Kumar-Sen@users.noreply.github.com&gt;
Co-authored-by: Simon Charette &lt;charette.s@gmail.com&gt;</content>
</entry>
</feed>
