class ListWrapper(list):
# Constructor
__init__(self, **kwargs):
allIsGood = False
# 'kwargs' is a dict with all your 'argument=value' pairs
# Check if all arguments are given & set allIsGood
if not allIsGood:
raise ValueError("ListWrapper doesn't match schema!")
else:
# Call the list's constructor, i.e. the super constructor
super(ListWrapper, self).__init__()
# Manipulate 'self' as you please
from eve.io.mongo import Validator
class MyValidator(Validator):
def _validate_empty(self, empty, field, value):
# let the standard validation happen
super(Validator, self)._validate_empty(empty, field, value)
# add your custom list validation
if isinstance(value, list) and len(value) == 0 and not empty:
self._error(field, "list cannot be empty")
没有一种内在的方法可以做到这一点。不过,您可以为列表定义一个包装类:
在需要非空列表的任何地方使用
ListWrapper
。如果您愿意,您可以将模式的定义外部化,并将其作为输入添加到构造函数中。在另外:您可能想看看this
当前,
empty
验证规则仅适用于字符串类型,但您可以将标准验证器子类化,使其能够处理列表:或者,如果要提供标准的
^{pr2}$empty
错误消息:然后按如下方式运行API:
^{3}$PS:我计划将来某个时候将列表和dict添加到Cerberus的
empty
规则中。在相关问题 更多 >
编程相关推荐