如何验证棉花糖中特定类型的元素列表?

How to validate a list of elements of specific type in marshmallow?

我在烧瓶中有一个 POST 端点,它采用 json 数据,其中包含一个键 - collections 有一个列表作为值,而该列表又包含包含特定的字典列表里面的钥匙。

我正在尝试验证 request.json 但找不到合适的方法。

这是棉花糖模式的代码:

class RowSchema(Schema):
    nationalCustomerId = fields.Int(required=True)
    storeId = fields.Int(required=True)
    categoryId = fields.Int(required=True)
    deliveryDate = fields.Date(required=True, format="%Y-%m-%d")

class RequestSchema(Schema):
    combinations = fields.List(RowSchema)

我试图用 RequestSchema 验证 request.json

我发送的request.json如下:

{
    "combinations": [
            {
                "nationalCustomerId": 1,
                "storeId": 1,
                "categoryId": 1,
                "deliveryDate": "2020-01-20"
            }
        ]
}

我哪里出错了?

这是我遇到的错误:

ValueError: The list elements must be a subclass or instance of marshmallow.base.FieldABC.

您在 fields.List

中缺少 fields.Nested
class RowSchema(Schema):
    nationalCustomerId = fields.Int(required=True)
    storeId = fields.Int(required=True)
    categoryId = fields.Int(required=True)
    deliveryDate = fields.Date(required=True, format="%Y-%m-%d")

class RequestSchema(Schema):
    combinations = fields.List(fields.Nested(RowSchema))