通过DjangoJSONEncoder编码UUID,如何将其解码回来?

2024-10-01 04:46:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是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_数据时,它返回一个dict:

{"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


Tags: sample字符串fromtestimportencoderuuidextra