You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wagtail中ListBlock内嵌RichText字段JSON序列化报错解决方法

问题原因

Error: Object of type RichText is not JSON serializable.

该报错的根因为从RichTextBlock中取出的字段值是Wagtail封装的RichText实例对象,并非原生字符串,Python默认的JSON序列化器无法识别该类型。

解决方案

只需将RichText对象转换为字符串即可,根据业务需求有两种转换方式可选:

  • 如需获取最终渲染完成的HTML内容:直接用str()方法包裹RichText对象
  • 如需获取富文本编辑器存储的原始源码(包含Wagtail内部短标记):取RichText对象的source属性
修改后代码
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"]:
            temp_dict = {
                'title': item.get("title"),
                'text': str(item.get("text")), # 此处修改,将RichText对象转成字符串
                # 若需要原始富文本源码可替换为下行
                # 'text': item.get("text").source,
            }
            dict_list.append(temp_dict)

        return dict_list

修改后返回的text字段为原生字符串,可正常被JSON序列化。

内容的提问来源于stack exchange,提问作者nickb84

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:36:08