我正在设置一个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在迁移之前无法序列化的内容。
你建议我做些什么来解决这个问题?如有需要,请询问更多信息。
答案 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上使用的内容)。