首页 > 解决方案 > Pydantic 允许在具有嵌套模型的字段上使用奇怪的类型

问题描述

目前我有这个脚本:

from typing import List
from uuid import uuid4, UUID

from pydantic import BaseModel, Field


class Id(BaseModel):
    value:UUID = Field(default_factory=uuid4)

class User(BaseModel):
    id:Id = Field(default_factory=Id)
    roles:List[str] = ['student']

class Project(BaseModel):
    id:Id = Field(default_factory=Id)
    creator:User

id = Id()
print(id)

user = User()
print(user)

project = Project(creator={})
print(project)

脚本应该按原样运行

当我实例化一个项目时,pydantic 允许我放置非用户对象,如字典、字符串、Id(Id 类型的对象)和其他一些对象,但我觉得这不是预期的。最奇怪的是,当传递错误值时,字段会自动填充正确类型的对象

这里发生了什么?提前致谢!

标签: pythonvalidationfastapipython-typingpydantic

解决方案


推荐阅读