簡體   English   中英

驗證列表元素在棉花糖中是唯一的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM