【问题标题】:Use of StreamField in Snippets on Wagtail在 Wagtail 的片段中使用 StreamField
【发布时间】:2016-08-31 06:26:28
【问题描述】:

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

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

【问题讨论】:

    标签: python django wagtail wagtail-streamfield wagtail-snippet


    【解决方案1】:

    是的,您绝对可以将 Streamfield 添加到 sn-p。它的工作方式与您在 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 保存的数据。

    希望对您有所帮助。

    【讨论】:

    • 太棒了,感谢 KS 的回答。现在我知道这是可以接受的,(当我回到电脑前时)我将发布离你不远的代码。它生成黑条很好,但是当你单击一个块时会出现 JS 错误。也许有人可以帮忙。这是一个非常普通的安装,它们在其他地方也能正常工作,所以有点令人费解。
    • FWIW 我在带有流字段的 sn-p 模型中也遇到了 JS 错误;解决方法是定义panels
    猜你喜欢
    • 2019-07-06
    • 2016-10-29
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    相关资源
    最近更新 更多