【问题标题】:How to fix Cannot Serialize error while setting up Django 1.9 application如何在设置 Django 1.9 应用程序时修复无法序列化错误
【发布时间】:2016-07-23 04:44:02
【问题描述】:

我正在设置一个 Django 1.9 应用程序(Python 2),但遇到了麻烦。当我尝试python manage.py makemigrations 时,我收到以下错误:

ValueError:无法序列化:[myapp.models.OverwriteStorage 对象 at 0x7fa1b84fc150] 有些值 Django 无法序列化 迁移文件。有关更多信息,请参阅 https://docs.djangoproject.com/en/1.9/topics/migrations/#migration-serializing

OverwriteStorage 是我在 models.py 中包含的一个自定义类,它使用 Azure 存储覆盖 Django 的内置存储类(位于 django/core/files/storage.py)。转到上面引用的链接,我列出了所有 Django 在迁移之前无法序列化的内容。

你建议我做什么来解决这个问题?如果需要,请询问更多信息。

【问题讨论】:

    标签: python django azure serialization


    【解决方案1】:

    您的存储类必须是可解构的。点#4 in this checklist。这意味着,您需要在自定义存储类中提供deconstruct() 方法

    类似这样的:

    def deconstruct(self):
        path = 'python to your storage class'
        args = {}
        kwargs = {}
        return path, args, kwargs
    

    引用自文档:

    您的存储类必须是可解构的,以便可以序列化 当它用于迁移中的字段时。只要你的领域有 本身可序列化的参数,您可以使用 django.utils.deconstruct.deconstructible 类装饰器 (这就是 Django 在 FileSystemStorage 上使用的)。

    【讨论】:

    • 谢谢哥们。我实际上最终使用了通过 from django.utils.deconstruct import deconstructible 导入的 @deconstructable 类装饰器
    • @HassanBaig 更好:)
    猜你喜欢
    • 2021-04-18
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 2019-05-23
    • 1970-01-01
    • 2019-11-23
    相关资源
    最近更新 更多