擅长:python、mysql、java
<p>您可以创建一个类装饰器,将<code>Schema</code>添加到模型中:</p>
<pre><code>def add_schema(cls):
class Schema(ma.ModelSchema):
class Meta:
model = cls
cls.Schema = Schema
return cls
</code></pre>
<p>然后呢</p>
^{pr2}$
<p>模式将作为类属性<code>Entry.Schema</code>提供。在</p>
<p>最初的尝试失败的原因是棉花糖<code>Schema</code>类是使用<a href="https://github.com/marshmallow-code/marshmallow/blob/dev/marshmallow/schema.py#L74" rel="noreferrer">custom metaclass</a>构造的,它检查通过执行类主体和<a href="https://github.com/marshmallow-code/marshmallow-sqlalchemy/blob/dev/marshmallow_sqlalchemy/schema.py#L86" rel="noreferrer">does its thing</a>创建的命名空间。修改已经构造的类时,为时已晚。在</p>
<p>如果您不熟悉Python中的元类,请在<a href="https://docs.python.org/3/reference/datamodel.html#metaclasses" rel="noreferrer">language reference</a>中了解它们。他们是一个工具,允许伟大的事情和伟大的滥用。在</p>