Skip to content

Commit 9b8f966

Browse files
committed
Merge pull request #3073 from tomchristie/support_trim_whitespace_with_allow_blank_false
Support allow_blank=False with trim_whitespace=True.
2 parents d560997 + 39ece9b commit 9b8f966

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

rest_framework/fields.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,7 @@ def run_validation(self, data=empty):
580580
# Test for the empty string here so that it does not get validated,
581581
# and so that subclasses do not need to handle it explicitly
582582
# inside the `to_internal_value()` method.
583-
if data == '':
583+
if data == '' or (self.trim_whitespace and six.text_type(data).strip() == ''):
584584
if not self.allow_blank:
585585
self.fail('blank')
586586
return ''

tests/test_fields.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,13 @@ def test_trim_whitespace_disabled(self):
461461
field = serializers.CharField(trim_whitespace=False)
462462
assert field.to_internal_value(' abc ') == ' abc '
463463

464+
def test_disallow_blank_with_trim_whitespace(self):
465+
field = serializers.CharField(allow_blank=False, trim_whitespace=True)
466+
467+
with pytest.raises(serializers.ValidationError) as exc_info:
468+
field.run_validation(' ')
469+
assert exc_info.value.detail == ['This field may not be blank.']
470+
464471

465472
class TestEmailField(FieldValues):
466473
"""

0 commit comments

Comments
 (0)