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/2] 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/2] 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])