[英]Validating list elements are unique in marshmallow
我想了解是否可以使用棉花糖驗證功能來檢查列表中的所有元素是否都是唯一的。
我有以下架構:
from marshmallow import Schema, fields, validate
class PaymentSchema(Schema):
...
currencies = fields.List(
fields.String(
required=True,
validate=[
validate.OneOf(["USD", "EUR", "AUS", "GBP"]),
validate.Length(min=1, max=4)
]
)
)
是否有可能保證給定具有重復貨幣( ["USD", "EUR", "EUR"]
)的貨幣列表會引發ValidationError ?
謝謝!
validates
裝飾器允許自定義驗證:
from marshmallow import Schema, ValidationError, fields, validate, validates
class PaymentSchema(Schema):
currencies = fields.List(
fields.String(
required=True,
validate=[
validate.OneOf(["USD", "EUR", "AUS", "GBP"]),
validate.Length(min=1, max=4)
]
)
)
@validates('currencies')
def no_duplicate_currencies(self, value):
if len(value) != len(set(value)):
raise ValidationError('currencies must not contain duplicate elements')
使用uniqueItems
關鍵字檢查數組的元素是否唯一: https : uniqueItems
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.