SQLAlchemyモデルを使用してFlask APIを作成しています。それは簡単に自分自身をダンプすることができますので、私はスキーマを持つように各モデルをしたいと思いますSQLAlchemyモデルのマシュマロスキーマを動的に生成する方法
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
なぜモデルと一般的なスキーマが宣言モデルとスキーマとは異なる上書きされますか?クラス属性Entry.Schema
として利用できるようになります
def add_schema(cls):
class Schema(ma.ModelSchema):
class Meta:
model = cls
cls.Schema = Schema
return cls
、その後
@add_schema
class Entry(db.Model):
...
スキーマ: