在 Wagtail 的代码片段中使用 StreamField
Use of StreamField in Snippets on Wagtail
我正在尝试在我的 Wagtail 网站上构建一些结构化摘要。我浏览了 documentation,但在这一点上什么也没看到(如果我错过了,请原谅我)。
是否可以在代码段中使用 StreamField
?或者,仅在 Pages
是的,你绝对可以在snippet中添加一个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 可用于生成内容的可用选项。这些块本身与 SQL 的 CRUD 操作无关,它们仅用于操作为 Streamfield 保存的数据。
希望对您有所帮助。
我正在尝试在我的 Wagtail 网站上构建一些结构化摘要。我浏览了 documentation,但在这一点上什么也没看到(如果我错过了,请原谅我)。
是否可以在代码段中使用 StreamField
?或者,仅在 Pages
是的,你绝对可以在snippet中添加一个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 可用于生成内容的可用选项。这些块本身与 SQL 的 CRUD 操作无关,它们仅用于操作为 Streamfield 保存的数据。
希望对您有所帮助。