如何创建动态棉花糖字段(也就是以编程方式更改用于序列化的字段)?

时间:2018-05-15 13:52:07

标签: python marshmallow

我们说我有两个模型和两个序列化器:

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,用户可以同时需要一本书和一本书及其作者。

真实情况要复杂得多,用户应该能够要求一本书+许多其他字段,因此创建多个模式实际上并不是一种选择。

如何创建灵活的模型以及可以通过编程方式添加字段(在本例中为嵌套字段)?

1 个答案:

答案 0 :(得分:1)

在实例化序列化程序时,您可以使用onlyinclude准确指定该特定案例所需的字段。

例如,如果您只想序列化一本书的ID和标题,您可以这样做:

schema = BookSchema(only=('id', 'title'))

或使用exclude

schema = BookSchema(exclude=('authors',))

文档:https://marshmallow.readthedocs.io/en/latest/api_reference.html#schema