UUIDField respects default when an empty string is supplied

This commit is contained in:
Brett Haydon 2015-07-10 00:34:20 +10:00
parent f33ca01511
commit ac6d75ece6
2 changed files with 10 additions and 0 deletions

View File

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

View File

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