8

いくつかの があり、そのリストが空でないBaseModelことを確認したいとしましょう。options私は完全にそれを行うことができますvalidator:

class Trait(BaseModel):
    name: str
    options: List[str]

    @validator("options")
    def options_non_empty(cls, v):
        assert len(v) > 0
        return v

これを行うための他のよりエレガントな方法はありますか?

4

2 に答える 2

16

を使用する場合@validator:

return v if v else doSomething

Python は空のリストのboolean-essを False と見なします

を使用したくない場合@validator

Pydantic では、以下を使用しますconlist

from pydantic import BaseModel, conlist
from typing import List

class Trait(BaseModel):
    name: str
    options: conlist(str, min_items=1)
于 2020-04-27T21:23:52.847 に答える
1

Python では、空のリストは false であり、任意の数の要素を持つリストは true です。

>>> bool([])
False
>>> bool([1,2,3])
True
>>> bool([False])
True
>>> bool([[]])
True

これは、リストが空でないことを簡単にassert v、または確認できることを意味します。assert Trait.options

于 2020-04-27T21:21:13.247 に答える