【发布时间】:2020-12-21 03:32:15
【问题描述】:
创建与我的模型相同的棉花糖模式的日子已经一去不复返了。我发现 this excellent answer 解释了如何使用简单的装饰器从我的 SQA 模型自动生成模式,因此我实现了它并将已弃用的 ModelSchema 替换为较新的 SQLAlchemyAutoSchema:
def add_schema(cls):
class Schema(SQLAlchemyAutoSchema):
class Meta:
model = cls
cls.Schema = Schema
return cls
这很好用...直到我碰到一个带有血腥Enum的模特。
错误:Object of type MyEnum is not JSON serializable
我在网上搜索,找到了this useful answer。
但我想将它作为装饰器的一部分来实现,以便它也可以自动生成。换句话说,当使用add_schema 装饰器生成模式时,我想用EnumField(TheEnum, by_value=True) 自动覆盖我的模型中的所有枚举;这样我就不必手动覆盖所有字段。
最好的方法是什么?
【问题讨论】:
标签: python enums sqlalchemy marshmallow