From 74f4a97e90d6cbb1d61cf92709fd35bea1b6a7fa Mon Sep 17 00:00:00 2001 From: Base25Punam <25punamgode@gmail.com> Date: Tue, 7 Apr 2026 20:00:00 +0530 Subject: [PATCH 1/3] Fix #9750: Respect blank=True when applying uniqueness constraints --- rest_framework/serializers.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 5f34b00194..adf5086f2b 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -1526,18 +1526,22 @@ def get_uniqueness_extra_kwargs(self, field_names, declared_fields, extra_kwargs else: default = empty + if unique_constraint_name in model_fields: - # The corresponding field is present in the serializer if default is empty: - uniqueness_extra_kwargs[unique_constraint_name] = {'required': True} + if getattr(unique_constraint_field, "blank", False): + uniqueness_extra_kwargs[unique_constraint_name] = { + "required": False, + "allow_blank": True, + } + else: + uniqueness_extra_kwargs[unique_constraint_name] = {"required": True} else: - uniqueness_extra_kwargs[unique_constraint_name] = {'default': default} + uniqueness_extra_kwargs[unique_constraint_name] = {"default": default} + elif default is not empty: - # The corresponding field is not present in the - # serializer. We have a default to use for it, so - # add in a hidden field that populates it. hidden_fields[unique_constraint_name] = HiddenField(default=default) - + # Update `extra_kwargs` with any new options. for key, value in uniqueness_extra_kwargs.items(): if key in extra_kwargs: From 6be141964496b871baa1a8b06c1fd2eb6c74dcfb Mon Sep 17 00:00:00 2001 From: Base25Punam <25punamgode@gmail.com> Date: Tue, 7 Apr 2026 20:38:30 +0530 Subject: [PATCH 2/3] Fix #9750: Respect blank=True when applying uniqueness constraints --- rest_framework/serializers.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index adf5086f2b..3997ca0185 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -1526,7 +1526,6 @@ def get_uniqueness_extra_kwargs(self, field_names, declared_fields, extra_kwargs else: default = empty - if unique_constraint_name in model_fields: if default is empty: if getattr(unique_constraint_field, "blank", False): @@ -1542,7 +1541,6 @@ def get_uniqueness_extra_kwargs(self, field_names, declared_fields, extra_kwargs elif default is not empty: hidden_fields[unique_constraint_name] = HiddenField(default=default) - # Update `extra_kwargs` with any new options. for key, value in uniqueness_extra_kwargs.items(): if key in extra_kwargs: value.update(extra_kwargs[key]) From 32265943b0f319c64fed759490c8fb4e7116f4cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asif=20Saif=20Uddin=20=7B=22Auvi=22=3A=22=E0=A6=85?= =?UTF-8?q?=E0=A6=AD=E0=A6=BF=22=7D?= Date: Mon, 11 May 2026 15:53:24 +0600 Subject: [PATCH 3/3] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- rest_framework/serializers.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 3997ca0185..49c9a37688 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -1533,6 +1533,8 @@ def get_uniqueness_extra_kwargs(self, field_names, declared_fields, extra_kwargs "required": False, "allow_blank": True, } + if getattr(unique_constraint_field, 'empty_strings_allowed', False): + uniqueness_extra_kwargs[unique_constraint_name]["default"] = CreateOnlyDefault('') else: uniqueness_extra_kwargs[unique_constraint_name] = {"required": True} else: