序列化之前更改信息

问题描述

我有一个数据库模型,例如:-

class Script(db.Model):
   path = db.Column(db.String(50))

和类似的序列化器:-

class ScriptSchema(ma.Schema):
   class Meta:
      fields = (
          'path'
   )

我的问题是当我在查询后转储数据时:-

all_scripts_orm = Script.query.all()
all_scripts = ScriptSchema(many=True).dump(all_scripts_orm)

我以

的形式获取数据
[
   {"path": "Sample_folder/Sample_Script_1.txt"},{"path": "Sample_folder/Sample_script_2.txt"}
]

但是我希望能够只提取脚本名称并序列化

[
    {"path": "Sample_script_1.txt"},...
]

如何解决此问题,因为我不想在脚本模型中仅为名称添加一列?

解决方法

使用Function字段,文档示例here和文档here。例如:

from os import path as op

class ScriptSchema(ma.Schema):
   class Meta:
      fields = (
          'path'
   )

   path = fields.Function(lambda obj: op.basename(obj.path))