移除Streamfield块时出现Wagtail Migration错误

时间:2017-11-23 18:05:28

标签: django wagtail

我有一个基于SnippetChooserBlock的Streamfield块我删除了,这很好,迁移很好。

('call_to_action_snippet', SnippetChooserBlock(CallToActionSnippet,icon="success",template='myapp/blocks/cta_snippet.html')),

当我尝试从我的模型中删除CallToActionSnippet时,从旧的迁移文件运行makemigrations时出现错误:

AttributeError: 'module' object has no attribute 'CallToActionSnippet'

我在这里做错了什么想法?我知道如果SF自定义块基于某些块类型而无法删除,但我认为SnippetChooserBlock没问题。

感谢

乔丝

1 个答案:

答案 0 :(得分:0)

问题不在于SnippetChooserBlock,而在于我想要删除的代码CallToActionSnippet吗?

如果您查看最初创建此Streamfield的迁移,您应该会看到wagtail.wagtailsnippets.blocks.SnippetChooserBlock(yourapp.snippets.CallToActionSnippet)之类的内容。但是,由于您删除了代码段,因此当迁移尝试加载时,它会失败。

SnippetChooserBlock的目标模型可以作为appname.modelname类型字符串(稍后lazily loaded)传递。因此,不要在迁移中将模型实例传递给wagtail.wagtailsnippets.blocks.SnippetChooserBlock,而是编辑它以传递字符串'yourapp.CallToActionSnippet'