What's Changed
Breaking changes
- Drop support for Python 3.9 by @auvipy in #9781
- Drop deprecated coreapi support by @browniebroke in #9895
Features
- Add ability to specify output format for
DurationFieldby @sevdog in #8532 - Add missing decorators:
@versioning_class(),@content_negotiation_class(),@metadata_class()for function-based views by @qqii in #9719 - Add support for Python 3.14 by @cclauss in #9780
- Support
violation_error_codeandviolation_error_messagefromUniqueConstraintinUniqueTogetherValidatorby @s-aleshin in #9766 - Add support for
ipaddressobjects inJSONEncoderby @corenting in #9087 - Add optional support to serialize
BigIntegerto string by @HoodyH in #9775 - Add Django 6.0 support by @MehrazRumman in #9819
Bug fixes
- Prevent small risk of
Tokenoverwrite by @mahdirahimi1999 in #9754 - Fix
UniqueTogetherValidatorvalidation when condition references a read-only field by @ticosax in #9764 - Fix validation on many to many field when
default=Noneby @Genarito in #9790 - Fix invalid SPDX license expression in
__init__.pyby @TheFunctionalGuy in #9799 - Fix
HTMLFormRendererto ensure a validdatetime-localformat by @mgaligniana in #9365 - Fix mutable default arguments in OrderingFilter methods by @killerdevildog in #9742
- Update TokenAdmin to respect USERNAME_FIELD of the user model by @m000 in #9836
- Preserve ordering in
MultipleChoiceFieldby @fbozhang in #9735
Translations
- Update French translation by @SebCorbin in #9770
- Update Brazilian Portuguese translations by @JVPinheiroReis in #9828
- Fix and improve French translations by @deronnax in #9896
- Add missing Russian translation by @minorytanaka in #9903
Packaging
- Migrate packaging to
pyproject.tomlby @deronnax in #9056 - Move package data rules from
MANIFEST.intopyproject.tomlby @p-r-a-v-i-n in #9825 - Set up release workflow with trusted publisher by @browniebroke in #9852
Other changes
- Refactor token generation to use the
secretsmodule by @mahdirahimi1999 in #9760 - Add validation for decorator out-of-order with
@api_viewby @kernelshard in #9821 - Switch to mkdocs material theme for documentation by @browniebroke in #9849
New Contributors
- @khaledsukkar2 made their first contribution in #9717
- @qqii made their first contribution in #9719
- @zankoAn made their first contribution in #9788
- @uche-wealth made their first contribution in #9795
- @s-aleshin made their first contribution in #9766
- @Infamous003 made their first contribution in #9794
- @Genarito made their first contribution in #9790
- @TheFunctionalGuy made their first contribution in #9799
- @mahdighadiriii made their first contribution in #9800
- @p-r-a-v-i-n made their first contribution in #9801
- @itssimon made their first contribution in #9718
- @huynguyengl99 made their first contribution in #9785
- @corenting made their first contribution in #9087
- @killerdevildog made their first contribution in #9742
- @dayandavid made their first contribution in #9820
- @abhishektiwari made their first contribution in #9826
- @HoodyH made their first contribution in #9775
- @Shrikantgiri25 made their first contribution in #9808
- @JVPinheiroReis made their first contribution in #9828
- @m000 made their first contribution in #9836
- @Nabute made their first contribution in #9767
- @therealjozber made their first contribution in #9845
- @nexapytech made their first contribution in #9867
- @RispaJoseph made their first contribution in #9874
- @LorenzoGuideri made their first contribution in #9875
- @maldoinc made their first contribution in #9893
- @0Nafi0 made their first contribution in #9861
- @MoeSalah1999 made their first contribution in #9870
- @kelsonbrito50 made their first contribution in #9901
- @fbozhang made their first contribution in #9735
- @minorytanaka made their first contribution in #9903
- @kosbemrunal made their first contribution in #9904
- @htvictoire made their first contribution in #9916
Full Changelog: 3.16.1...3.17.0