From b64ea2055551870a21f28fb5a4ca9abe21fc95b7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 5 Aug 2026 19:37:39 +0000 Subject: [PATCH 1/9] Prepare release 3.18.0 --- docs/community/release-notes.md | 4 ++++ rest_framework/__init__.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index 06cd35d654..ab7134b54c 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -36,6 +36,10 @@ You can determine your currently installed version using `pip show`: --- +## 3.18.x series + + + ## 3.17.x series ### 3.17.2 diff --git a/rest_framework/__init__.py b/rest_framework/__init__.py index 8ed9a44e75..d9de0a460e 100644 --- a/rest_framework/__init__.py +++ b/rest_framework/__init__.py @@ -8,7 +8,7 @@ """ __title__ = 'Django REST framework' -__version__ = '3.17.2' +__version__ = '3.18.0' __author__ = 'Tom Christie' __license__ = 'BSD-3-Clause' __copyright__ = 'Copyright 2011-2023 Encode OSS Ltd' From 92eded42cd49bed6ef597f591ea60c7fd9396038 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Wed, 5 Aug 2026 20:44:03 +0100 Subject: [PATCH 2/9] Add release notes content --- docs/community/release-notes.md | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index ab7134b54c..798b50da1a 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -38,7 +38,50 @@ You can determine your currently installed version using `pip show`: ## 3.18.x series +### 3.18.1 +**Date**: 6th August 2026 + +#### What's Changed + +##### Breaking changes + +* Drop support for Django 4.2, Django 5.0 and Django 5.1 by [@p-r-a-v-i-n](https://github.com/p-r-a-v-i-n) in [#9899](https://github.com/encode/django-rest-framework/pull/9899) +* Change errors for list serializers (`many=True`) to dict format by [@p-r-a-v-i-n](https://github.com/p-r-a-v-i-n) in [#9837](https://github.com/encode/django-rest-framework/pull/9837) + +##### Features + +* Add support for Django 6.1 by [@browniebroke](https://github.com/browniebroke) in [#10003](https://github.com/encode/django-rest-framework/pull/10003) +* Add `unaccent` to `SearchFilter` by [@mgaligniana](https://github.com/mgaligniana) in [#9385](https://github.com/encode/django-rest-framework/pull/9385) +* Add `@throttle_scope` function based view decorator by [@d-ryzhykau](https://github.com/d-ryzhykau) in [#9963](https://github.com/encode/django-rest-framework/pull/9963) + +##### Bug fixes + +* Replace `cc_delim_re usage` with `split_header_value` for Django 6.1+ compatibility by [@laymonage](https://github.com/laymonage) in [#9978](https://github.com/encode/django-rest-framework/pull/9978) +* Include `choices` param for non-editable fields by [@ticosax](https://github.com/ticosax) in [#9929](https://github.com/encode/django-rest-framework/pull/9929) +* Improve cursor pagination template accessibility in browsable API by [@kosbemrunal](https://github.com/kosbemrunal) in [#9905](https://github.com/encode/django-rest-framework/pull/9905) +* Fix partial form data updates involving `ListField` by [@Natgho](https://github.com/Natgho) in [#9902](https://github.com/encode/django-rest-framework/pull/9902) +* Fix crash due to browsable API extra action permissions by [@dlfoerster](https://github.com/dlfoerster) in [#9934](https://github.com/encode/django-rest-framework/pull/9934) +* Handle unhashable `BooleanField` representation value by [@emfpdlzj](https://github.com/emfpdlzj) in [#9973](https://github.com/encode/django-rest-framework/pull/9973) +* Fix OpenAPI schema for zero numeric bounds on ListField children by [@zainnadeem786](https://github.com/zainnadeem786) in [#9977](https://github.com/encode/django-rest-framework/pull/9977) +* Fix `set_rollback` to only rollback initialized connections by [@jdetaeye](https://github.com/jdetaeye) in [#9599](https://github.com/encode/django-rest-framework/pull/9599) + +#### New Contributors + +* [@Im-Bilal](https://github.com/Im-Bilal) made their first contribution in [#9967](https://github.com/encode/django-rest-framework/pull/9967) +* [@dlfoerster](https://github.com/dlfoerster) made their first contribution in [#9934](https://github.com/encode/django-rest-framework/pull/9934) +* [@emfpdlzj](https://github.com/emfpdlzj) made their first contribution in [#9973](https://github.com/encode/django-rest-framework/pull/9973) +* [@zainnadeem786](https://github.com/zainnadeem786) made their first contribution in [#9977](https://github.com/encode/django-rest-framework/pull/9977) +* [@laymonage](https://github.com/laymonage) made their first contribution in [#9978](https://github.com/encode/django-rest-framework/pull/9978) +* [@harshitkandpal](https://github.com/harshitkandpal) made their first contribution in [#9993](https://github.com/encode/django-rest-framework/pull/9993) +* [@udit-prabhakar](https://github.com/udit-prabhakar) made their first contribution in [#9962](https://github.com/encode/django-rest-framework/pull/9962) +* [@sai09111995](https://github.com/sai09111995) made their first contribution in [#9884](https://github.com/encode/django-rest-framework/pull/9884) +* [@d-ryzhykau](https://github.com/d-ryzhykau) made their first contribution in [#9963](https://github.com/encode/django-rest-framework/pull/9963) +* [@Elkasitu](https://github.com/Elkasitu) made their first contribution in [#8494](https://github.com/encode/django-rest-framework/pull/8494) +* [@vishalanandl177](https://github.com/vishalanandl177) made their first contribution in [#10002](https://github.com/encode/django-rest-framework/pull/10002) +* [@jdetaeye](https://github.com/jdetaeye) made their first contribution in [#9599](https://github.com/encode/django-rest-framework/pull/9599) + +**Full Changelog**: [3.17.1...3.18.0](https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0) ## 3.17.x series From 153b6bd505598db4111ae35ae99e31b4897b06dd Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Wed, 5 Aug 2026 20:46:45 +0100 Subject: [PATCH 3/9] Fix version number in release notes --- docs/community/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index 798b50da1a..41b42a8a07 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -38,7 +38,7 @@ You can determine your currently installed version using `pip show`: ## 3.18.x series -### 3.18.1 +### 3.18.0 **Date**: 6th August 2026 From 11040518b0b7d3f58130b2c4f25b218e8311abc6 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Thu, 6 Aug 2026 07:55:27 +0100 Subject: [PATCH 4/9] Fix heading levels --- docs/community/release-notes.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index 41b42a8a07..110ef1ee88 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -42,20 +42,18 @@ You can determine your currently installed version using `pip show`: **Date**: 6th August 2026 -#### What's Changed - -##### Breaking changes +#### Breaking changes * Drop support for Django 4.2, Django 5.0 and Django 5.1 by [@p-r-a-v-i-n](https://github.com/p-r-a-v-i-n) in [#9899](https://github.com/encode/django-rest-framework/pull/9899) * Change errors for list serializers (`many=True`) to dict format by [@p-r-a-v-i-n](https://github.com/p-r-a-v-i-n) in [#9837](https://github.com/encode/django-rest-framework/pull/9837) -##### Features +#### Features * Add support for Django 6.1 by [@browniebroke](https://github.com/browniebroke) in [#10003](https://github.com/encode/django-rest-framework/pull/10003) * Add `unaccent` to `SearchFilter` by [@mgaligniana](https://github.com/mgaligniana) in [#9385](https://github.com/encode/django-rest-framework/pull/9385) * Add `@throttle_scope` function based view decorator by [@d-ryzhykau](https://github.com/d-ryzhykau) in [#9963](https://github.com/encode/django-rest-framework/pull/9963) -##### Bug fixes +#### Bug fixes * Replace `cc_delim_re usage` with `split_header_value` for Django 6.1+ compatibility by [@laymonage](https://github.com/laymonage) in [#9978](https://github.com/encode/django-rest-framework/pull/9978) * Include `choices` param for non-editable fields by [@ticosax](https://github.com/ticosax) in [#9929](https://github.com/encode/django-rest-framework/pull/9929) @@ -81,7 +79,7 @@ You can determine your currently installed version using `pip show`: * [@vishalanandl177](https://github.com/vishalanandl177) made their first contribution in [#10002](https://github.com/encode/django-rest-framework/pull/10002) * [@jdetaeye](https://github.com/jdetaeye) made their first contribution in [#9599](https://github.com/encode/django-rest-framework/pull/9599) -**Full Changelog**: [3.17.1...3.18.0](https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0) +**Full Changelog**: [3.17.2...3.18.0](https://github.com/encode/django-rest-framework/compare/3.17.2...3.18.0) ## 3.17.x series From b6804871d80fce6bf5ce6912ed1f6141fcb9f725 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Thu, 6 Aug 2026 10:19:00 +0100 Subject: [PATCH 5/9] Add latest changes merged since opening Co-authored-by: Bruno Alla --- docs/community/release-notes.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index 110ef1ee88..84b463f257 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -63,6 +63,8 @@ You can determine your currently installed version using `pip show`: * Handle unhashable `BooleanField` representation value by [@emfpdlzj](https://github.com/emfpdlzj) in [#9973](https://github.com/encode/django-rest-framework/pull/9973) * Fix OpenAPI schema for zero numeric bounds on ListField children by [@zainnadeem786](https://github.com/zainnadeem786) in [#9977](https://github.com/encode/django-rest-framework/pull/9977) * Fix `set_rollback` to only rollback initialized connections by [@jdetaeye](https://github.com/jdetaeye) in [#9599](https://github.com/encode/django-rest-framework/pull/9599) +* Fix DictField HTML input returning empty dict for missing fields by [@veeceey](https://github.com/veeceey) in [#9891](https://github.com/encode/django-rest-framework/pull/9891) +* Raise clear error for unsupported unique-together list updates by [@zainnadeem786](https://github.com/zainnadeem786) in [#9981](https://github.com/encode/django-rest-framework/pull/9981) #### New Contributors @@ -78,6 +80,7 @@ You can determine your currently installed version using `pip show`: * [@Elkasitu](https://github.com/Elkasitu) made their first contribution in [#8494](https://github.com/encode/django-rest-framework/pull/8494) * [@vishalanandl177](https://github.com/vishalanandl177) made their first contribution in [#10002](https://github.com/encode/django-rest-framework/pull/10002) * [@jdetaeye](https://github.com/jdetaeye) made their first contribution in [#9599](https://github.com/encode/django-rest-framework/pull/9599) +* [@veeceey](https://github.com/veeceey) made their first contribution in #[#9891](https://github.com/encode/django-rest-framework/pull/9891) **Full Changelog**: [3.17.2...3.18.0](https://github.com/encode/django-rest-framework/compare/3.17.2...3.18.0) From 8d90fda5951d4a4ea1077902dc0ad9252a82fdda Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Thu, 6 Aug 2026 10:19:44 +0100 Subject: [PATCH 6/9] Apply suggestion from @browniebroke --- docs/community/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index 84b463f257..c55f399984 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -80,7 +80,7 @@ You can determine your currently installed version using `pip show`: * [@Elkasitu](https://github.com/Elkasitu) made their first contribution in [#8494](https://github.com/encode/django-rest-framework/pull/8494) * [@vishalanandl177](https://github.com/vishalanandl177) made their first contribution in [#10002](https://github.com/encode/django-rest-framework/pull/10002) * [@jdetaeye](https://github.com/jdetaeye) made their first contribution in [#9599](https://github.com/encode/django-rest-framework/pull/9599) -* [@veeceey](https://github.com/veeceey) made their first contribution in #[#9891](https://github.com/encode/django-rest-framework/pull/9891) +* [@veeceey](https://github.com/veeceey) made their first contribution in [#9891](https://github.com/encode/django-rest-framework/pull/9891) **Full Changelog**: [3.17.2...3.18.0](https://github.com/encode/django-rest-framework/compare/3.17.2...3.18.0) From 229f8322e9d5c955bf9b375ef3c838fcd53e2a64 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Thu, 6 Aug 2026 16:32:58 +0100 Subject: [PATCH 7/9] Add PR 9866 to changelog Co-authored-by: Bruno Alla --- docs/community/release-notes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index c55f399984..910b59ecd7 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -52,6 +52,7 @@ You can determine your currently installed version using `pip show`: * Add support for Django 6.1 by [@browniebroke](https://github.com/browniebroke) in [#10003](https://github.com/encode/django-rest-framework/pull/10003) * Add `unaccent` to `SearchFilter` by [@mgaligniana](https://github.com/mgaligniana) in [#9385](https://github.com/encode/django-rest-framework/pull/9385) * Add `@throttle_scope` function based view decorator by [@d-ryzhykau](https://github.com/d-ryzhykau) in [#9963](https://github.com/encode/django-rest-framework/pull/9963) +* Add `nulls_distinct` support to `UniqueTogetherValidator` by [@mag123c](https://github.com/mag123c) in [#9866](https://github.com/encode/django-rest-framework/pull/9866) #### Bug fixes @@ -81,6 +82,7 @@ You can determine your currently installed version using `pip show`: * [@vishalanandl177](https://github.com/vishalanandl177) made their first contribution in [#10002](https://github.com/encode/django-rest-framework/pull/10002) * [@jdetaeye](https://github.com/jdetaeye) made their first contribution in [#9599](https://github.com/encode/django-rest-framework/pull/9599) * [@veeceey](https://github.com/veeceey) made their first contribution in [#9891](https://github.com/encode/django-rest-framework/pull/9891) +* [@mag123c](https://github.com/mag123c) made their first contribution in [#9866](https://github.com/encode/django-rest-framework/pull/9866) **Full Changelog**: [3.17.2...3.18.0](https://github.com/encode/django-rest-framework/compare/3.17.2...3.18.0) From 42bce7e45c05c387e15f317d27b4d49aa27286b9 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Fri, 7 Aug 2026 07:11:47 +0100 Subject: [PATCH 8/9] Update release date --- docs/community/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index 910b59ecd7..d7c7484e0f 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -40,7 +40,7 @@ You can determine your currently installed version using `pip show`: ### 3.18.0 -**Date**: 6th August 2026 +**Date**: 7th August 2026 #### Breaking changes From 0439e5aecf8514ded8bdd83eacaf60e731fcec39 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Fri, 7 Aug 2026 09:01:28 +0100 Subject: [PATCH 9/9] Apply suggestion from @browniebroke --- docs/community/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index d7c7484e0f..a29e63526e 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -83,6 +83,7 @@ You can determine your currently installed version using `pip show`: * [@jdetaeye](https://github.com/jdetaeye) made their first contribution in [#9599](https://github.com/encode/django-rest-framework/pull/9599) * [@veeceey](https://github.com/veeceey) made their first contribution in [#9891](https://github.com/encode/django-rest-framework/pull/9891) * [@mag123c](https://github.com/mag123c) made their first contribution in [#9866](https://github.com/encode/django-rest-framework/pull/9866) +* [@anurag12anu](https://github.com/anurag12anu) made their first contribution in [#9814](https://github.com/encode/django-rest-framework/pull/9814) **Full Changelog**: [3.17.2...3.18.0](https://github.com/encode/django-rest-framework/compare/3.17.2...3.18.0)