如何为Flask-SQLAlchemy模型和Schema添加字面量属性
解决方法
要在序列化结果中添加非数据库字段的status_map,可以通过Marshmallow的两种方式实现,以下是可行方案:
方案一:使用@post_dump装饰器
在Schema类中添加后置处理方法,将status_map注入序列化后的结果:
class DemoSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Demo load_instance = True ordered = True @ma.post_dump def add_status_map(self, data, **kwargs): data['status_map'] = Demo.status_map return data
方案二:定义Method字段
直接在Schema中声明Method类型字段,指定取值方法:
class DemoSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Demo load_instance = True ordered = True status_map = ma.Method("get_status_map") def get_status_map(self, obj): return Demo.status_map
两种方式都不会影响数据库操作,仅在序列化对象时将status_map添加到返回结果中。
内容的提问来源于stack exchange,提问作者Remi Colinet
相关产品推荐
相关产品推荐

