这是我的
StreamField
:
body = StreamField([
('heading', blocks.CharBlock(classname="full title")),
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
])
我的问题是:如何添加我自己的可以传递给
StreamField
的块?我的意思是包含多个图像的块,例如块?我在 wagtail 文档中没有找到我的问题的答案。
我的意思是包含多个图像的块,类似于块?
这是您可以尝试的示例,我不确定您具体想要实现什么目标,所以我将其保留为相当通用,但可以根据您的喜好进行修改。
class GalleryBlock(blocks.StructBlock):
"""
Nameable gallery with multiple images.
"""
name = blocks.CharBlock(required=True)
images = blocks.ListBlock(
blocks.StructBlock([
("image", ImageChooserBlock(required=True)),
("alt_text", blocks.CharBlock(required=False, max_length=100)),
])
)
那么您当然需要将其添加到您的 StreamField 中
body
。
也许是这样的。
body = StreamField([
('heading', blocks.CharBlock(classname="full title")),
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
('gallery', GalleryBlock(icon='image')), # add this line
])
希望这可以帮助您了解这些内置块是多么灵活和出色,以及 StreamField 是多么出色。有时您需要将它们组合起来构建满足您需求的特定结构。