【问题标题】:UUID Is not JSON Serializable (dumpdata)UUID 不是 JSON 可序列化的(转储数据)
【发布时间】:2015-03-03 15:22:32
【问题描述】:

我遇到了命令 dumpdata 的问题。但是,我使用django-uuidfield 作为我的一些模型的主键;每当我尝试运行dumpdata 时,都会遇到错误

TypeError: UUID('...') is not JSON serializable.

我发现在 Django 的 DjangoJSONEncoder 类内部,它不会检查 UUID 对象,而是会转到引发异常的父类的 default()

当我添加检查时,它似乎工作正常,没有任何错误或警告。

我不确定这是错误还是我做错了什么。

注意:

我没有更改django-uuidfield 中的任何代码。

谢谢。

编辑:

dumpdata 适用于 uuidfield 未设置为 auto 的另一个模型。不起作用的是将uudfield 设置为auto

【问题讨论】:

  • 不是你。这是一个错误:github.com/dcramer/django-uuidfield/issues/47
  • 我看过了,但我注意到它适用于我的一个模型。两者的区别在于不起作用的是auto,而起作用的是不是auto
  • 我明白了。我还没有调查为什么使用 auto 会失败,但是将 auto 关闭并使用 save() 覆盖设置值并不是很困难。

标签: python json django serialization uuid


【解决方案1】:

在我的models.py中:

import uuid

在我的模型中:

class MyUser(AbstractUser):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

为了解决这个问题,我在 MyUser 中使用了这个函数:

def user_id(self):
    return self.id.__str__()

由于 TypeError 尝试你的类型 UUID 不是 JSON 可序列化的,

所以你应该改用string

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2015-04-24
    • 2013-04-26
    • 2014-12-26
    相关资源
    最近更新 更多