基于项目索引的Python棉花糖验证

2024-09-30 10:36:37 发布

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

我有一个与下面类似的模式:

class MySchema(Schema):
    nested = fields.Nested(
        NestedSchema, required=True, many=True, validate=[validate.Length(min=1)]
    )

class NestedSchema(Schema):
    somefield = fields.Field()
    somefield2 = fields.Field()

我希望我的somefield字段是必需的,但仅适用于列表中的第一项。有人知道怎么做到吗?在

如果可能的话,我还想把我的错误信息保存在适当的元素中,我返回了错误dict:

^{pr2}$

我已经尝试过用pre_loadvalidates_schema来完成,但我无法将消息放在errors dict中的适当位置。问题是somefield错误被放在_schema中,或者类似这样:

{
    'nested': {
        'somefield': ['This field is required']
    }
}

样本预载:

@pre_load(pass_many=True)
def validate_somefield(self, data, many):
    try:
        address = data[0]
    except IndexError:
        pass
    else:
        if address.get('somefield') is None:
            raise ValidationError(
                'somefield is required for first element'
            )

Tags: truefieldfieldsisschema错误requiredvalidate

热门问题