背景
我试图确定在目前的情况下,这个功能是否可以在Wagtail中实现,或者我是否需要添加一个表单小部件适配器来处理这个问题。
我的页面模型上有一个StreamField,看起来像这样:
body = StreamField(
[
("introduction", content_blocks.IntroductionBlock()),
("benefits", content_blocks.BenefitsBlock()),
("alternatives", content_blocks.AlternativesBlock()),
("detail", content_blocks.DetailBlock()),
("success", content_blocks.SuccessBlock()),
("complications", content_blocks.ComplicationsBlock()),
("medication", content_blocks.MedicationBlock()),
("recovery", content_blocks.RecoveryBlock()),
("summary", content_blocks.SummaryBlock()),
],
use_json_field=True,
)
每个块的定义如下:
class PanelBlock(blocks.StreamBlock):
header = HeaderBlock()
content = BaseContentBlock()
snippet = ReusableSnippetBlock()
choice = LibraryChoiceBlock()
embed = VideoBlock()
figure = FigureBlock()
class IntroductionBlock(PanelBlock):
class Meta:
icon = "help"
label = _("Introduction")
label_format = "Introduction"
class BenefitsBlock(PanelBlock):
class Meta:
icon = "circle-check"
label = _("Benefits")
label_format = "Benefits"
# etc...
我的模板逻辑使用这些“PanelBlocks”将内容分块到div中,编辑通常希望确保这些div的大小/长度大致相似,以从最终用户的角度保持内容的视觉平衡(即,一个面板不会明显长于或短于其兄弟面板)。
问题
在检查这些面板的“平衡”时,如果一个特定的块比它的兄弟块长得多,那么编辑器能够使用操作菜单在给定点拆分StreamBlock将非常有用(就像嵌套在StreamBlock中的RichTextBlocks一样):
Action menu entry for RichTextBlocks
但是StreamBlocks缺少“拆分”操作,即使父级是StreamField:
No "Actions" submenu for StreamBlocks
通过查看Wagtail代码库,
this does appear to already be a feature from what I can tell
(尽管我可能误解了),所以我的问题是:
这是一个已经存在的功能,只是我的实现存在一些问题,导致拆分/操作菜单被错误禁用,还是这需要一个自定义解决方案?
到目前为止,我刚刚阅读了Wagtail文档、代码库和相关的GH问题,试图找到有关现有“拆分”功能具体支持什么的详细信息,以及组合框是否可以轻松扩展。