使用Pull字段时如何获取平面错误消息?

2024-10-01 19:14:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建两个模式OTPSchema,VMCreationSchema。VMCreationSchema使用Pull字段获取VMSchema的特定字段,即规格和图像标识

from marshmallow import (Schema, fields,
                         ValidationError, validates,
                         validates_schema, RAISE)
class VMSchema(Schema):
    uuid = fields.UUID(required=True)
    owner = fields.Str(required=True)
    specs = fields.Dict(required=True)
    hostname = fields.Str(required=True)
    status = fields.Str(required=True)
    image_uuid = fields.UUID(required=True)

class OTPSchema(BaseStrictSchema):
    name = fields.Str(required=True)
    realm = fields.Str(required=True)
    token = fields.Str(required=True)

class VMCreationScheme(OTPSchema):
    specs = fields.Pluck(VMSchema, "specs", required=True)
    uuid = fields.Pluck(VMSchema, "image_uuid", required=True)

但是,当出现验证错误时,消息不是平坦的,即显示字段内的字段,然后显示消息。 例如,如果我

k = {
        "name": "ahmedbilal",
        "realm": "admin",
        "token": "TOKEN",
        "specs": {"cpu": 2, "ram": "2GB"},
        "uuid": "meow"
}
s = VMCreationSchema()
try:
    r = s.load(k)
    print(r)
    print(s.dump(r))
except ValidationError as e:
    print(e.messages)

它将打印以下错误{'uuid': {'image_uuid': ['Not a valid UUID.']}}。 我想要那样的{'uuid': ['Not a valid UUID.']}}

首选的解决方案是使用棉花糖库中内置的东西


Tags: imagetruefieldsuuidschemarequiredclassprint

热门问题