wagtail 如何 JSON 序列化 ListBlock 中的富文本字段

wagtail how to JSON serialize RichText field in ListBlock

错误:RichText 类型的对象JSON 不可序列化。

我的代码:

class AvvisiBlock(blocks.StructBlock):

avvisi = blocks.ListBlock(
    blocks.StructBlock(
        [
            ("title", blocks.CharBlock(classname="full title", icon="title", required=True)),
            ("text", blocks.RichTextBlock(icon="pilcrow", required=True)),
        ]
    )
)

def get_api_representation(self, value, context=None):
    dict_list = []
    for item in value["avvisi"]:
        print(item)
        temp_dict = {
            'title': item.get("title"),
            'text': item.get("text"),
        }
        dict_list.append(temp_dict)

    return dict_list

项目价值:

StructValue([('title', 'avvisi importanti 1'), ('text', <wagtail.core.rich_text.RichText object at 0x000001F73FCDE988>)])

如何序列化对象?

如 Wagtail 的 rich text internals 文档中所述,富文本有两种可能的表示形式 - 'symbolic' 源表示形式,它通过 ID 跟踪页面链接和其他项目(例如图像),以及呈现的 HTML 版本(如您所料,通过 URL 引用它们)。

如果您想要 API 到 return 呈现的 HTML,请使用:

    temp_dict = {
        'title': item.get("title"),
        'text': str(item.get("text")),
    }

或者如果你想要它 return 符号源:

    temp_dict = {
        'title': item.get("title"),
        'text': item.get("text").source,
    }