From ac6d75ece69bfcd591fb6931bd533ea8fb9fa4df Mon Sep 17 00:00:00 2001 From: Brett Haydon Date: Fri, 10 Jul 2015 00:34:20 +1000 Subject: [PATCH] UUIDField respects default when an empty string is supplied --- rest_framework/fields.py | 2 ++ tests/test_fields.py | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 3ca7d682e..2e6db8e8b 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -660,6 +660,8 @@ class UUIDField(Field): super(UUIDField, self).__init__(**kwargs) def to_internal_value(self, data): + if data == '' and self.default: + data = self.get_default() if not isinstance(data, uuid.UUID): try: if isinstance(data, six.integer_types): diff --git a/tests/test_fields.py b/tests/test_fields.py index 76e6d9d60..0b54be7c2 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -557,6 +557,14 @@ class TestUUIDField(FieldValues): self._test_format('urn', 'urn:uuid:00000000-0000-0000-0000-000000000000') self._test_format('hex', '0' * 32) + def test_default_uuid(self): + """ + If `default=uuid` then '' is a valid input. + """ + field = serializers.UUIDField(default=uuid.uuid4) + output = field.run_validation('') + assert isinstance(output, uuid.UUID) + class TestIPAddressField(FieldValues): """