我正在使用 SQLAlchemy 模型创建一个 Flask API。我不想为我拥有的每个模型定义一个模式,我不想每次都这样做:
class EntrySchema(ma.ModelSchema):
class Meta:
model = Entry
我希望每个模型都有一个模式,所以它可以很容易地转储自己。创建默认模式并设置 Schema.Meta.model 不起作用:
class Entry(db.Model):
__tablename__ = 'entries'
id = db.Column(db.Integer, primary_key=True)
started_at = db.Column(db.DateTime)
ended_at = db.Column(db.DateTime)
description = db.Column(db.Text())
def __init__(self, data):
for key in data:
setattr(self, key, data[key])
self.Schema = Schema
self.Schema.Meta.model = self.__class__
def dump(self):
schema = self.Schema()
result = schema.dump(self)
return result
class Schema(ma.ModelSchema):
class Meta:
pass
为什么覆盖模型的通用模式与声明模型的模式不同?