[1.8.x] Fixed #24319 -- Added validation for UUID model field

Backport of de0241eb98 from master
This commit is contained in:
Josh Smeaton 2015-02-12 13:25:12 +11:00
parent 03f4e2d909
commit 1784c326b1
2 changed files with 11 additions and 2 deletions

View File

@ -2390,12 +2390,12 @@ class UUIDField(Field):
return "UUIDField"
def get_db_prep_value(self, value, connection, prepared=False):
if isinstance(value, six.string_types):
value = uuid.UUID(value.replace('-', ''))
if isinstance(value, uuid.UUID):
if connection.features.has_native_uuid_field:
return value
return value.hex
if isinstance(value, six.string_types):
return value.replace('-', '')
return value
def to_python(self, value):

View File

@ -34,6 +34,15 @@ class TestSaveLoad(TestCase):
loaded = NullableUUIDModel.objects.get()
self.assertEqual(loaded.field, None)
def test_wrong_value(self):
self.assertRaisesMessage(
ValueError, 'badly formed hexadecimal UUID string',
UUIDModel.objects.get, field='not-a-uuid')
self.assertRaisesMessage(
ValueError, 'badly formed hexadecimal UUID string',
UUIDModel.objects.create, field='not-a-uuid')
class TestMigrations(TestCase):