You need to enable JavaScript to run this app. Flask Marshmallow嵌套序列化如何移除嵌套字典的key直接返回值
优惠活动
大模型
产品
解决方案
定价
更多

Flask Marshmallow嵌套序列化如何移除嵌套字典的key直接返回值

你要实现嵌套字段直接返回目标字段值而非结构化对象,有两种常用的实现方案:


方案1:使用Pluck字段(最推荐,适配当前场景)

Pluck是marshmallow专门提供的、用于从嵌套关联对象中提取单个字段值的字段类型,直接修改JournalSchema的publisher字段定义即可:

class PublisherSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        fields = ('name',)
        model = Publisher


class JournalSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        fields = ('title', 'publisher')
        model = Journal
        ordered = True

    # 直接取关联Publisher对象的name字段值作为publisher字段的返回结果
    publisher = ma.Pluck(PublisherSchema, 'name')

方案2:使用Method字段自定义取值逻辑

如果后续需要对返回值做更复杂的逻辑处理,可以用自定义方法实现字段序列化:

class JournalSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        fields = ('title', 'publisher')
        model = Journal
        ordered = True

    publisher = ma.Method("get_publisher")

    def get_publisher(self, obj):
        # obj为当前序列化的Journal实例,直接返回关联publisher的name属性
        return obj.publisher.name if obj.publisher else None

两种方案都可以得到你期望的返回结果,另外你给出的期望示例JSON存在语法小错误,正确的返回结构如下:

{
  "title": "hello",
  "publisher": "bye"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 05:15:03