我正在使用 Wagtail/CodeRedCMS 为非营利组织开发一个网站。我有一个继承自
EventPage
的自定义 CoderedEventPage
类。我想使用一组默认的嵌套块预先填充新的事件页面:Body
->Responsive Grid Row
->Column
->Text
。我了解到,可以通过在 default
对象上设置 StreamField
属性来实现这一点,并且我已经能够成功地使用它来预填充单个子块。但是,我不知道如何让它适用于嵌套结构。
我在
EventPage
班中已经了解了以下内容:
body = StreamField(
LAYOUT_STREAMBLOCKS,
null=True,
blank=True,
use_json_field=True,
default=[
("row", {
"content": [
("text", {"value":"foobar"})
]
})
]
)
这不会像我尝试过的其他一些
default
值那样抛出错误,但它只起作用了一半。
在管理界面中添加新的事件页面时我期望/希望看到什么: 带有预先填充正文的新活动页面
我使用上面的代码看到了什么: 带有部分填充正文的新活动页面
响应式网格行是预先填充的,这是部分成功的,但列和文本框不是。我知道我的
default
值不太正确,但我似乎无法理解如何正确指定它。如有任何帮助,我们将不胜感激。
你想让基本结构看起来像这样,但看起来这还是有点问题。
body = StreamField(
LAYOUT_STREAMBLOCKS,
null=True,
blank=True,
use_json_field=True,
default=[
("row", {
"content": [
("content", {"content": [("text", "Foobar")]})
]
})
]
)
特别是,您需要考虑 GridBlock、ColumnBlock 以及其中的每个 Streamblock。
此外,流块似乎需要格式为 {"type": "...", "value": "..."} 的流子默认值
body = StreamField(
LAYOUT_STREAMBLOCKS,
null=True,
blank=True,
use_json_field=True,
default=[
{
"type": "row",
"value": {
"content": [
{
"type": "content",
"value": {
"column_size": "",
"content": [
{
"type": "text",
"value": "Foobar"
}
],
}
}
],
}
}
]
)