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): """