| #37023 |
Make XML serializer put each ManyToManyField object on its own line
|
Cleanup/optimization
|
Tim Graham
|
Core (Serialization)
|
| #37021 |
Add a helper function to return the permission string representation to be used with `user.has_perm()`
|
New feature
|
Mariatta
|
contrib.auth
|
| #37020 |
Adjust release instructions to stop editing *.po files fetched from Transifex
|
Cleanup/optimization
|
Jacob Walls
|
Documentation
|
| #37019 |
Make sync login() and logout() set request.auser if present
|
Bug
|
Vishy Algo
|
contrib.auth
|
| #37014 |
SQLite emulation of db_default involving Extract/Trunc might unexpectedly apply overridden timezone for inserted values
|
Bug
|
Praful Gulani
|
Database layer (models, ORM)
|
| #37013 |
Omitting tzinfo argument to Trunc & Extract with USE_TZ = True and TIME_ZONE != UTC creates ambiguity for migrations
|
Bug
|
|
Database layer (models, ORM)
|
| #37009 |
Filter action icons in the admin changelist are slightly misaligned vertically
|
Cleanup/optimization
|
|
contrib.admin
|
| #37007 |
Extend contributor writing style section to counsel against the kinds of mistakes LLMs make
|
Cleanup/optimization
|
Jacob Walls
|
Documentation
|
| #37006 |
Attempting to recreate the PK in a model with no other fields generates a migration that crashes on SQLite
|
Bug
|
Carol Naranjo
|
Migrations
|
| #37000 |
cursor_iter relies on GC for server-side cursor cleanup, causing transaction abort after savepoint rollback
|
Bug
|
Vidhi Singh
|
Database layer (models, ORM)
|
| #36998 |
firstof tag doesn't require an argument when used with as var
|
Bug
|
Shubh Rai
|
Template system
|
| #36991 |
LookupError crash (HTTP 500) in parse_header_parameters() when Content-Type header contains RFC 2231 parameter with invalid encoding name
|
Bug
|
Dinesh Thumma
|
HTTP handling
|
| #36990 |
Referrer header required for django.contrib.gis.forms.widgets.OSMWidget
|
Bug
|
|
GIS
|
| #36988 |
Limitation of supported GeoIP databases is too tight
|
Bug
|
SnippyCodes
|
GIS
|
| #36986 |
Add a hook to Serializer._value_from_field() for complex fields like CompositePrimaryKey
|
Cleanup/optimization
|
Tim Graham
|
Core (Serialization)
|
| #36984 |
Prevent extremely long validation messages in inlines
|
Cleanup/optimization
|
Karolis Ryselis
|
contrib.admin
|
| #36983 |
Improve free-threading performance
|
Cleanup/optimization
|
|
Core (Other)
|
| #36979 |
GenericInlineModelAdmin doesn't respect ModelAdmin.get_exclude()
|
Cleanup/optimization
|
MANAS MADESHIYA
|
contrib.contenttypes
|
| #36977 |
Cache more expression `output_field` properties
|
Cleanup/optimization
|
Adam Johnson
|
Database layer (models, ORM)
|
| #36972 |
Provide help text in password prompts for createsuperuser and changepassword commands
|
New feature
|
Ketan Sahu
|
contrib.auth
|
| #36971 |
Provide pathways to other contributions in first PR comment
|
Cleanup/optimization
|
Adarsh Dubey
|
Documentation
|
| #36969 |
collectstatic post-processing with support_js_module_import_aggregation breaks on certain javascript files
|
Bug
|
blighj
|
contrib.staticfiles
|
| #36967 |
Use graphlib's TopologicalSorter to handle circular imports similar to migrations
|
Cleanup/optimization
|
blighj
|
contrib.staticfiles
|
| #36964 |
Clarify how persistent connections interact with runserver
|
Cleanup/optimization
|
Youssef Tarek Ali
|
Documentation
|
| #36956 |
import_string logic for AttributeError is too broad, can be improved under Python 3.10+
|
Cleanup/optimization
|
Glenn Matthews
|
Utilities
|
| #36953 |
Refactor Django mail tests
|
Cleanup/optimization
|
Mike Edmunds
|
Core (Mail)
|
| #36947 |
Changing a field's db_comment unnecessarily alters column type
|
Bug
|
Clifford Gama
|
Migrations
|
| #36945 |
.values() and .order_by() miss FilteredRelation when resolving aliases shadowing relationship traversals
|
Bug
|
Sarah Boyce
|
Database layer (models, ORM)
|
| #36938 |
Unioning an ordered queryset fails on Oracle unless a limit is taken
|
Bug
|
|
Database layer (models, ORM)
|
| #36933 |
Yes/no admin icons hard to differentiate with dichromatic viewing deficiency
|
Cleanup/optimization
|
Paul K. Gerke
|
contrib.admin
|
| #36930 |
Using a custom ModelChoices (not IntegerChoices or TextChoices) member as the default value of a model field doesn't select the default value in form's select
|
Bug
|
Antoine Humbert
|
Database layer (models, ORM)
|
| #36925 |
InlineModelAdmin docs do not mention view_on_site as a shared feature with ModelAdmin
|
Cleanup/optimization
|
James Aylett
|
Documentation
|
| #36924 |
FieldError when using selected_related on ForeignObject together with defer
|
Bug
|
Vishy Algo
|
Database layer (models, ORM)
|
| #36919 |
Allow `TaskResult` (and `Task`) to be pickled
|
Cleanup/optimization
|
Varun Kasyap Pentamaraju
|
Tasks
|
| #36916 |
Add support for streaming with TaskGroups
|
New feature
|
Thomas Grainger
|
HTTP handling
|
| #36912 |
Q.create() doesn't validate connectors as Q.__init__() does
|
Cleanup/optimization
|
Anna Makarudze
|
Database layer (models, ORM)
|
| #36905 |
Remove safe parameter from JsonResponse
|
Cleanup/optimization
|
Tim Schilling
|
HTTP handling
|
| #36901 |
Centralize mitigations against timing attacks targeting user enumeration
|
Cleanup/optimization
|
Afenomamy
|
contrib.auth
|
| #36900 |
startproject and startapp do not sanitize filename from Content-Disposition header
|
Bug
|
ar3ph
|
Core (Management commands)
|
| #36897 |
Improve repercent_broken_unicode() performance
|
Cleanup/optimization
|
beestarkdev
|
Utilities
|
| #36892 |
Lazy Tuples in field Choices generate repeated migrations with no changes
|
Bug
|
Praful Gulani
|
Migrations
|
| #36888 |
acreate method doesn't call asave
|
Bug
|
Mateusz Szymanowski
|
Database layer (models, ORM)
|
| #36884 |
Translation of admin log messages fails due to case inconsistency in field names
|
Bug
|
Thrishagowdabl
|
contrib.admin
|
| #36882 |
Add debug instrumentation for callproc() in CursorDebugWrapper
|
New feature
|
akshaytheflash
|
Database layer (models, ORM)
|
| #36881 |
Documented list of supported fields for ModelAdmin.search_fields is inaccurate
|
Bug
|
Amar
|
Documentation
|
| #36880 |
Postgres hash exclusion constraints are not considered totally unique
|
Bug
|
Karthik
|
Database layer (models, ORM)
|
| #36877 |
Order of update operations behaves differently on MySQL compared to other databases
|
Cleanup/optimization
|
Samir Shah
|
Documentation
|
| #36874 |
Speed up mask/unmask cipher secret functions
|
Cleanup/optimization
|
Tim Lansen
|
CSRF
|
| #36864 |
Automatic shell imports cannot reliably handle submodules
|
Bug
|
Jacob Walls
|
Core (Management commands)
|
| #36863 |
Under WSGI, multiple calls to asgiref.sync.async_to_sync within the same request do not share the same event loop.
|
Cleanup/optimization
|
Mykhailo Havelia
|
HTTP handling
|
| #36849 |
Moved GEOS Error Messages to Exceptions
|
Cleanup/optimization
|
David Smith
|
GIS
|
| #36846 |
ContentType.get_object_for_this_type() raises inappropriate exception type for removed models
|
Cleanup/optimization
|
Nilesh Pahari
|
contrib.contenttypes
|
| #36835 |
Add all public API classes to django.template.__all__
|
Cleanup/optimization
|
Praful Gulani
|
Template system
|
| #36830 |
Store the cache alias on the cache backend instance
|
New feature
|
amirreza
|
Core (Cache system)
|
| #36828 |
Evaluate using <fieldset> on ClearableFileInput
|
Cleanup/optimization
|
Youngkwang Yang
|
Forms
|
| #36825 |
CSP nonces are not applied in the Django admin
|
New feature
|
Antoliny
|
contrib.admin
|
| #36816 |
Allow **kwargs in @task decorator to support custom Task subclasses
|
New feature
|
Nilesh Pahari
|
Tasks
|
| #36813 |
Convert system checks for max_length and max_digits to __init__() checks.
|
Cleanup/optimization
|
Mehraz Hossain Rumman
|
Database layer (models, ORM)
|
| #36809 |
Allow EmailValidator to customize error messages depending on the part that failed validation
|
Cleanup/optimization
|
jaffar Khan
|
Core (Other)
|
| #36803 |
Make AlterField a no-op when ManyToManyField's through.db_table remains the same between renames.
|
Cleanup/optimization
|
Clifford Gama
|
Migrations
|
| #36784 |
Add CSP support to Django's script object and media objects
|
New feature
|
Johannes Maron
|
Forms
|
| #36779 |
DeleteModel can lead to missing FK constraints
|
Bug
|
Vishy Algo
|
Migrations
|
| #36775 |
Raise ImproperlyConfigured when Feed.link is missing instead of failing with AttributeError
|
Cleanup/optimization
|
yureiblack
|
contrib.syndication
|
| #36770 |
SQLite threading tests are flaky when parallel test suite runs in forkserver mode
|
Cleanup/optimization
|
|
Testing framework
|
| #36767 |
Allow overriding redirect URL max length in `HttpResponseRedirectBase`
|
Cleanup/optimization
|
Varun Kasyap Pentamaraju
|
HTTP handling
|
| #36754 |
Broken migration created when GeneratedField's expression references a foreign key that has been deferred to another initial migration file
|
Bug
|
Ou7law007
|
Migrations
|
| #36732 |
Sitemaps with i18n=True fetch the entire queryset of items before paginating
|
Cleanup/optimization
|
Augusto Pontes
|
contrib.sitemaps
|
| #36729 |
Pre-compile regular expressions as standard
|
Cleanup/optimization
|
Jake Howard
|
Utilities
|
| #36700 |
ASGIHandler creates reference cycles that require a gc pass to free
|
Cleanup/optimization
|
farthestmage
|
HTTP handling
|
| #36694 |
PostGIS backend silently ignores most Index options when targeting a single GeometryField (expressions, condition, include, opclasses)
|
Bug
|
Clifford Gama
|
GIS
|
| #36682 |
RecursionError when traversing several reverse relations with FilteredRelation
|
Bug
|
Augusto Pontes
|
Database layer (models, ORM)
|
| #36670 |
Admin filter_vertical widget selector chooser has incorrect background color
|
Bug
|
Antoliny
|
contrib.admin
|
| #36667 |
How to Request PR Reviews Without Overstepping
|
Cleanup/optimization
|
JyothsnaMS
|
Documentation
|
| #36664 |
Python 3.15 compatibility.
|
New feature
|
Mariusz Felisiak
|
Core (Other)
|
| #36662 |
django.contrib.messages Storage creates circular references with Request objects
|
Cleanup/optimization
|
Augusto Pontes
|
contrib.messages
|
| #36657 |
Make advanced ORM functionality more discoverable
|
New feature
|
Segni Mekonnen
|
Documentation
|
| #36653 |
FORCE_SCRIPT_NAME is not respected for static URLs
|
Bug
|
Xingzhe Li
|
contrib.staticfiles
|
| #36649 |
Add `|=` update operator support to `MultiValueDict` and `QueryDict`.
|
New feature
|
Adam Johnson
|
HTTP handling
|
| #36642 |
makemessages provides invalid locale suggestions when attempting to format the locale string
|
Bug
|
Stephen kihuni
|
Internationalization
|
| #36640 |
Error messages should use aria-errormessage
|
Cleanup/optimization
|
|
Forms
|
| #36632 |
AlterIndexTogether in historical migration drops overlapping indices
|
Bug
|
nzioker
|
Database layer (models, ORM)
|
| #36630 |
Semantic structure and accessibility improvements for the admin navigation sidebar.
|
Bug
|
Antoliny
|
contrib.admin
|
| #36629 |
In the admin m2m widget filter_vertical, the “choose all” button is missing.
|
Bug
|
Nilesh Pahari
|
contrib.admin
|
| #36621 |
Button position issue when using admin filter_vertical.
|
Bug
|
Antoliny
|
contrib.admin
|
| #36608 |
Clarify dumpdata behavior and docs for custom serializers with internal_use_only flag
|
Cleanup/optimization
|
ksauder
|
Core (Management commands)
|
| #36593 |
Deprecate select_related() with no arguments
|
Cleanup/optimization
|
Adam Johnson
|
Database layer (models, ORM)
|
| #36588 |
Harden `django.utils.archive` against decompression bombs
|
Cleanup/optimization
|
Marcelo Elizeche Landó
|
Utilities
|
| #36582 |
Accessibility improvement for required field labels for inline forms in the admin.
|
Cleanup/optimization
|
Antoliny
|
contrib.admin
|
| #36579 |
yesno filter broken for translations that do not respect the ascii comma
|
Cleanup/optimization
|
Klaas van Schelven
|
Template system
|
| #36575 |
Document using a link for LogoutView
|
Cleanup/optimization
|
Abhimanyu Singh Negi
|
Documentation
|
| #36571 |
Deprecated usage of BINARY expr in MySQL lookups
|
Cleanup/optimization
|
Youssef Tarek Ali
|
Database layer (models, ORM)
|
| #36554 |
When the object __str__ is long, the object title is truncated in TabularInline.
|
Bug
|
Antoliny
|
contrib.admin
|
| #36553 |
Improve the semantic structure of admin widgets.
|
Cleanup/optimization
|
Antoliny
|
contrib.admin
|
| #36550 |
AssertionError raised when bulk creation model with primary key set via pre_save (e.g. auto_now_add) on databases with can_return_columns_from_insert
|
Bug
|
Abhimanyu Singh Negi
|
Database layer (models, ORM)
|
| #36546 |
Deprecate django.utils.crypto.constant_time_compare()
|
Cleanup/optimization
|
Pravin
|
Utilities
|
| #36542 |
AdminSite views (such as login) leak sensitive POST data
|
Bug
|
(James) Kanin Kearpimy
|
contrib.admin
|
| #36539 |
Label for related fields should use related model verbose_name attribute for field
|
Cleanup/optimization
|
Leandro de Souza
|
contrib.admin
|
| #36533 |
manage.py startapp <name> <directory> fails to create new app
|
Bug
|
jefferies917
|
Core (Management commands)
|
| #36529 |
Improvement of the filter and model selection sidebar on the admin changelist page for mobile screens.
|
New feature
|
Antoliny
|
contrib.admin
|
| #36523 |
Implement helper method to find module path of value
|
Cleanup/optimization
|
shrutisachan08
|
Utilities
|