Wagtail | 类定义方式下ChoiceBlock未在后台菜单显示求助
解决Wagtail StructBlock中ChoiceBlock不显示的问题
嘿,我一眼就揪出问题所在啦!你在ChoiceBlock的定义末尾多写了一个逗号,这直接导致它变成了元组的一部分,而不是StructBlock的有效字段,所以后台就只识别到了前面的TextBlock。
来看看问题出在哪一行:
type = blocks.ChoiceBlock(choices=[ ('markup', 'markup'), ('css', 'css') ], required=True),
注意最后的那个多余逗号——它让这行代码的结果变成了一个包含ChoiceBlock对象的单元素元组,而不是直接把ChoiceBlock对象赋值给type字段。Wagtail的StructBlock只会识别那些直接赋值为Block类型的属性,元组类型的字段会被直接忽略掉。
修正后的代码应该是这样的:
class CodeBlock(blocks.StructBlock): code = blocks.TextBlock(required=True) type = blocks.ChoiceBlock(choices=[ ('markup', 'markup'), ('css', 'css') ], required=True) # 删掉末尾的逗号 class Meta: template = 'home/blocks/code.html' class HomePageIndex(Page): # 你的页面字段定义...
把那个逗号删掉之后,刷新后台就能看到type对应的ChoiceBlock下拉菜单啦!这种小语法错误真的很容易忽略,尤其是写代码时顺手多敲了一下逗号~
内容的提问来源于stack exchange,提问作者r4r3devAut
相关产品推荐
相关产品推荐

