6

我正在尝试在我的 Wagtail 网站上构建一些结构化的片段。我浏览了文档,但在这一点上什么也没看到(如果我错过了,请原谅我)。

是否可以StreamField在片段内部使用?或者,仅在页面上

4

1 回答 1

11

的,您绝对可以将 Streamfield 添加到片段中。它的工作方式与您在 Wagtail Page 子类上使用它的方式相同。这是它的使用示例:

from wagtail.core.fields import StreamField
from wagtail.wagtailsnippets.models import register_snippet
from wagtail.wagtailadmin.edit_handlers import StreamFieldPanel

@register_snippet
class Contact(models.Model):
    contact_info = StreamField([
        ('email', MyBlocks.ContactEmail()),
        ('phone', MyBlocks.ContactPhone()),
        ('address', MyBlocks.ContactAddress()),
    ])

    panels = [StreamFieldPanel('contact_info')]

您没有要求的额外内容: Streamfield 是一个 Django 模型字段,因此它在您定义它的任何模型上都一样。实际上,Streamfield 只是保存为 JSON 字符串。唯一使它不同的是块。在 Streamfield 的第一个参数中定义的块实际上只是定义 Streamfield 可以用来生成内容的可用选项。块本身与 CRUD 操作的 SQL 无关,它们仅用于操作为 Streamfield 保存的数据。

希望有帮助。

于 2016-05-05T14:31:53.560 回答