Закодированный UUID через DjangoJSONEncoder, как декодировать его обратно?
Я использую JSONField, и для правильной сериализации UUID я использую класс DjangoJSONEncoder:
from uuid import uuid4
from django.core.serializers.json import DjangoJSONEncoder
from .models import JsonTestModel
sample_uuid = uuid4()
encoder = DjangoJSONEncoder()
encoded_uuid = encoder.encode(sample_uuid)
test = JsonTestModel.objects.create(extra_data={"encoded_uuid":encoded_uuid})
Когда я обращаюсь к test.extra_data, он возвращает дикту:
{"encoded_uuid": '"9e56a5aa-49c8-4ce9-b035-2f0d840fb5de"'}
Но поскольку это значение теперь является строкой, я не могу запросить базу данных, используя его. Возвращается:
raise ValueError('badly formed hexadecimal UUID string')
Ок, это ожидаемо, поскольку я работаю со строкой, а не с UUID. Но если я попытаюсь декодировать его обратно в UUID:
from uuid import UUID
decoded_uuid = UUID('"9e56a5aa-49c8-4ce9-b035-2f0d840fb5de"')
появляется эта ошибка:
raise ValueError('badly formed hexadecimal UUID string')
Итак, как я могу декодировать его обратно в UUID?