删除 Streamfield 块时发生 Wagtail 迁移错误
Wagtail Migration error when removing Streamfield block
我有一个基于 SnippetChooserBlock 的 Streamfield 块,我删除了它,这很好,迁移也很好。
('call_to_action_snippet', SnippetChooserBlock(CallToActionSnippet,icon="success",template='myapp/blocks/cta_snippet.html')),
当我随后尝试从我的模型中删除 CallToActionSnippet 时,当 运行 从较旧的迁移文件中进行迁移时,我收到错误消息:
AttributeError: 'module' object has no attribute 'CallToActionSnippet'
知道我做错了什么吗?我知道如果 SF 自定义块基于某些块类型,则无法删除它们,但我认为 SnippetChooserBlock 就可以了。
谢谢
乔斯
问题不直接出在 SnippetChooserBlock
上,而是出在你的片段 CallToActionSnippet
上,我想你删除了它?
如果您查看最初创建此 Streamfield 的迁移,您应该会看到类似 wagtail.wagtailsnippets.blocks.SnippetChooserBlock(yourapp.snippets.CallToActionSnippet)
的内容。但是,由于您删除了该代码段,因此当迁移尝试加载时失败。
SnippetChooserBlock
的目标模型可以作为 appname.modelname
类型字符串(稍后为 lazily loaded)传递。因此,与其在迁移中将模型实例传递给 wagtail.wagtailsnippets.blocks.SnippetChooserBlock
,不如将其编辑为传递字符串 'yourapp.CallToActionSnippet'
.
我有一个基于 SnippetChooserBlock 的 Streamfield 块,我删除了它,这很好,迁移也很好。
('call_to_action_snippet', SnippetChooserBlock(CallToActionSnippet,icon="success",template='myapp/blocks/cta_snippet.html')),
当我随后尝试从我的模型中删除 CallToActionSnippet 时,当 运行 从较旧的迁移文件中进行迁移时,我收到错误消息:
AttributeError: 'module' object has no attribute 'CallToActionSnippet'
知道我做错了什么吗?我知道如果 SF 自定义块基于某些块类型,则无法删除它们,但我认为 SnippetChooserBlock 就可以了。
谢谢
乔斯
问题不直接出在 SnippetChooserBlock
上,而是出在你的片段 CallToActionSnippet
上,我想你删除了它?
如果您查看最初创建此 Streamfield 的迁移,您应该会看到类似 wagtail.wagtailsnippets.blocks.SnippetChooserBlock(yourapp.snippets.CallToActionSnippet)
的内容。但是,由于您删除了该代码段,因此当迁移尝试加载时失败。
SnippetChooserBlock
的目标模型可以作为 appname.modelname
类型字符串(稍后为 lazily loaded)传递。因此,与其在迁移中将模型实例传递给 wagtail.wagtailsnippets.blocks.SnippetChooserBlock
,不如将其编辑为传递字符串 'yourapp.CallToActionSnippet'
.