[英]Wagtail - How to set rich text value in nested block (StreamField->StructBlock->RichTextBlock)
我有以下結構:
`class ParagraphWithRelatedLinkBlock(blocks.StructBlock):
text = blocks.RichTextBlock()
related_link = blocks.ListBlock(blocks.URLBlock())
class BlogPageSF(Page):
body = StreamField(
[
("paragraph", ParagraphWithRelatedLinkBlock(),
], use_json_field=True
)`
我想從腳本或 Django shell 設置“文本”字段的值(不是通過 Wagtail 管理站點)。
我怎樣才能做到這一點?
我曾嘗試在 shell 中執行以下操作:
`p = BlogPageSF()
rt = RichTextBlock('Test')
pb = ParagraphWithRelatedLinkBlock()
pb.text = rt
p.body.append(('paragraph', pb))
p.save()`
我希望 ParagraphWithRelatedLinkBlock 中的“文本”字段的值為“測試”
但我收到錯誤:AttributeError: 'ParagraphWithRelatedLinkBlock' object has no attribute 'items'
您插入 StreamField 數據的值不應是 Block class 的實例 - 塊實例僅用作 stream 定義的一部分(例如,當您編寫text = blocks.RichTextBlock()
時,您正在創建 RichTextBlock 的實例ParagraphWithRelatedLinkBlock
定義的 forms 部分)。
正確的數據類型要么是簡單的 Python 值,例如 StructBlock 的dict
,要么是專用值類型,例如 RichTextBlock 的wagtail.rich_text.RichText
。 因此,對於 ParagraphWithRelatedLinkBlock,您需要提供一個包含 RichText 值的字典:
from wagtail.rich_text import RichText
p = BlogPageSF()
p.body.append(('paragraph', {'text': RichText('Test')}))
p.save()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.