如何修复设置Django 1.9应用程序时无法序列化错误

时间:2016-04-03 18:07:46

标签: python django azure serialization

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

  

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

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

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

1 个答案:

答案 0 :(得分: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上使用的内容)。