我们说我有两个模型和两个序列化器:
class AuthorSchema(ma.ModelSchema):
class Meta:
model = Author
fields = ('id', 'name')
class BookSchema(ma.ModelSchema):
class Meta:
model = Book
authors = fields.Nested(AuthorSchema, many=True)
fields = ('id', 'title', 'authors')
我试图创建一些API,用户可以同时需要一本书和一本书及其作者。
真实情况要复杂得多,用户应该能够要求一本书+许多其他字段,因此创建多个模式实际上并不是一种选择。
如何创建灵活的模型以及可以通过编程方式添加字段(在本例中为嵌套字段)?
答案 0 :(得分:1)
在实例化序列化程序时,您可以使用only
或include
准确指定该特定案例所需的字段。
例如,如果您只想序列化一本书的ID和标题,您可以这样做:
schema = BookSchema(only=('id', 'title'))
或使用exclude
:
schema = BookSchema(exclude=('authors',))
文档:https://marshmallow.readthedocs.io/en/latest/api_reference.html#schema