Pydantic constr vs Field args
Pydantic constr vs Field args
我想知道以下两种写法的区别:
from pydantic import BaseModel, Field class Person(BaseModel): name: str = Field(..., min_length=1)
和:
from pydantic import BaseModel, constr class Person(BaseModel): name: constr(min_length=1)
这两种写法似乎执行相同的验证(甚至在name
为空字符串时引发完全相同的异常信息)。这只是代码风格的问题吗?其中一个比另一个更受推荐吗?
另外,如果我想将非空字符串列表作为属性包含在内,你认为哪种方法更好?:
from typing import List from pydantic import BaseModel, constr class Person(BaseModel): languages: List[constr(min_length=1)]
还是:
from typing import List from pydantic import BaseModel, Field class Person(BaseModel): languages: List[str] @validator('languages', each_item=True) def check_nonempty_strings(cls, v): if not v: raise ValueError('Empty string is not a valid language.') return v
编辑:
值得一提的是,我正在使用这个用于一个FastAPI应用程序。
编辑2:
对于我的第二个问题,我认为第一个选择更好,因为它在模式中包含了长度要求(因此在文档中有所体现)。