这是我的StreamField
:
body = StreamField([
('heading', blocks.CharBlock(classname="full title")),
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
])
我的问题是:如何添加我自己的可以传递给StreamField
的块?我的意思是包含多个图像的块,类似于块?在w文档中找不到我的问题的答案。
答案 0 :(得分:0)
当您询问:
我的意思是包含多个图像的块,例如块?
这是您可以尝试的示例,我不确定您要实现的目标是什么,因此我将其保留为通用名称,但可以根据自己的喜好进行修改。
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)),
])
)
然后,您当然需要将其添加到body
的StreamField中。
也许是这样的。
body = StreamField([
('heading', blocks.CharBlock(classname="full title")),
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
('gallery', GalleryBlock(icon='image')), # add this line
])
希望这可以帮助您了解这些内置块的灵活性和出色程度以及StreamField的出色程度。有时您需要将它们结合起来以构建满足您需求的特定结构。