【发布时间】:2017-08-10 23:54:43
【问题描述】:
我正在使用 SQLAlchemy 模型创建一个 Flask API。 我不想为我拥有的每个模型都定义一个模式,我不想每次都这样做:
class EntrySchema(ma.ModelSchema):
class Meta:
model = Entry
我希望每个模型都有一个架构,以便它可以轻松地转储自己。 创建默认 Schema 并设置 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
为什么覆盖模型的通用 Schema 与声明模型的 Schema 不同?
【问题讨论】:
标签: python flask sqlalchemy marshmallow