如何让SQLAlchemy AutoSchema强制应用字段的load_only等属性?
如何让SQLAlchemy AutoSchema强制应用字段的load_only等属性?
嘿,太懂这种不想重复写全量Schema的心情了!其实不用放弃AutoSchema的便利,只需要在AutoSchema类里显式定义你需要修改属性的字段,剩下的字段AutoSchema会自动帮你生成,而且会优先使用你自定义的字段属性。
举个例子,按照你的需求,代码可以改成这样:
from marshmallow import fields import marshmallow_sqlalchemy as ma class TestSchema(ma.SQLAlchemyAutoSchema): # 只把需要调整属性的字段单独写出来 id = fields.Int(dump_only=True) username = fields.Str(required=True) password = fields.Str(required=True, load_only=True) class Meta: model = Test include_fk = True load_instance = True include_relationships = False
这样写的话,AutoSchema会自动帮你生成Test模型里其他没显式定义的字段,而你写的这几个字段会严格使用你设置的dump_only、required、load_only这些属性,完美兼顾自动生成和自定义需求~
另外还有一种可选方式:在Meta类里通过fields参数传入字典来配置字段属性,不过显式定义字段的方式更直观,也更容易维护,所以更推荐前者。
备注:内容来源于stack exchange,提问作者Diego de la Iglesia
相关产品推荐
相关产品推荐

