1
0
mirror of https://github.com/django/django.git synced 2025-10-31 09:41:08 +00:00

Fixed #27378 -- Added support for serialization of uuid.UUID in migrations.

Thanks Yuriy Korobko for the initial patch and Tobias McNulty for review.
This commit is contained in:
Maxime Lorant
2016-11-06 13:53:00 +01:00
committed by Tim Graham
parent 7301770254
commit cb3fb34b86
4 changed files with 40 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ import decimal
import functools
import math
import types
import uuid
from importlib import import_module
from django.db import models
@@ -320,6 +321,11 @@ class TypeSerializer(BaseSerializer):
return "%s.%s" % (module, self.value.__name__), {"import %s" % module}
class UUIDSerializer(BaseSerializer):
def serialize(self):
return "uuid.%s" % repr(self.value), {"import uuid"}
def serializer_factory(value):
from django.db.migrations.writer import SettingsReference
if isinstance(value, Promise):
@@ -382,6 +388,8 @@ def serializer_factory(value):
return IterableSerializer(value)
if isinstance(value, (COMPILED_REGEX_TYPE, RegexObject)):
return RegexSerializer(value)
if isinstance(value, uuid.UUID):
return UUIDSerializer(value)
raise ValueError(
"Cannot serialize: %r\nThere are some values Django cannot serialize into "
"migration files.\nFor more, see https://docs.djangoproject.com/en/%s/"