1

我有这个架构

from marshmallow import validate, ValidationError from marshmallow_jsonapi import fields from marshmallow_jsonapi.flask import Relationship, Schema

class UserSchema(Schema):
    first_name = fields.Str(required=True])
    last_name = fields.Str(required=True)
    title = fields.Str(required=True)

    class Meta:
       type_ = 'users'
       self_view = "blog_view.users_detail"
       self_view_kwargs = {"user_id": "<id>", "_external": True}
       self_view_many = "blog_view.users_list"

    blog= Relationship(
        many=False,
        include_data=True,
        type_="blogs",
        include_resource_linkage=True,
        schema="BlogSchema"
        )

我想加载这些数据(来自 UI)进行验证:

bulk_data = [
              { 'type': 'users', 
                'relationships': {'blog': {'data': {'type': 'blogs', 'id': blog_id}}},
                 {'first_name': 'Billy', 'last_name': 'Butcher', 'title': 'Supe Hunter'} 
              },
              { 'type': 'users', 
                'relationships': {'blog': {'data': {'type': 'blogs', 'id': blog_id}}},
                 {'first_name': 'Home', 'last_name': 'Lander', 'title': 'Leader'} 
              },
              { 'type': 'users', 
                'relationships': {'blog': {'data': {'type': 'blogs', 'id': blog_id}}},
                 {'first_name': 'Black', 'last_name': 'Noir', 'title': 'Super Ninja'} 
              }
]

为了验证我做了:

data = UserSchema(many=True).load(input_data)

我收到一条错误消息,

AttributeError:“列表”对象没有属性“获取”

这很明显,因为我正在传递一个列表。当我从上面的列表中传递一个字典时,验证工作正常,但我想传递批量数据并立即进行验证,如 Marshmallow 文档所示:https://marshmallow.readthedocs.io/en/stable/quickstart。 html#验证

什么时候

许多=真

, load 方法需要一个集合类型,如 list、tuple、queryset 等。

关于如何验证 Marshmallow 中的数据列表的任何建议?棉花糖版本是:

marshmallow==2.18.0
marshmallow-jsonapi==0.23.1

谢谢!

4

0 回答 0