Закодированный 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?

Вернуться на верх