为什么我可以在pydantic列表中指定多种类型
class Embedded(BaseModel):
path: str
items: list[Union[ResourceItemDir, ResourceItemFile]] # here
limit: int
offset: int
sort: str
total: int
class ResourceItemFile(BaseModel):
name: str
path: str
size: int
file: str
resource_id: str
created: datetime.datetime
modified: datetime.datetime
media_type: str
antivirus_status: str
comment_ids: dict
exif: dict
md5: str
mime_type: str
preview: str
revision: int
sha256: str
share: dict
type: Literal["file"]
class ResourceItemDir(BaseModel):
name: str
path: str
comment_ids: dict
created: datetime.datetime
exif: dict
modified: datetime.datetime
public_key: str
public_url: str
resource_id: str
revision: int
share: dict
type: Literal["dir"]
为什么我不能在Pydantic列表中指定多种类型? 我还能如何指定项目
字段接受两种数据类型? 如果有想法,我应该实施多么不同?
现在是一个错误:
File "pydantic\main.py", line 331, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 99 validation errors for Resource
embedded -> items -> 2 -> public_key
field required (type=value_error.missing)
embedded -> items -> 2 -> public_url
field required (type=value_error.missing)
embedded -> items -> 2 -> size
field required (type=value_error.missing)
embedded -> items -> 2 -> file
field required (type=value_error.missing)
embedded -> items -> 2 -> media_type
field required (type=value_error.missing)
embedded -> items -> 2 -> antivirus_status
field required (type=value_error.missing)
embedded -> items -> 2 -> md5
field required (type=value_error.missing)
embedded -> items -> 2 -> mime_type
field required (type=value_error.missing)
embedded -> items -> 2 -> preview
field required (type=value_error.missing)
embedded -> items -> 2 -> sha256
field required (type=value_error.missing)
embedded -> items -> 2 -> type
unexpected value; permitted: 'file' (type=value_error.const; given=dir; permitted=('file',))
class Embedded(BaseModel):
path: str
items: list[Union[ResourceItemDir, ResourceItemFile]] # here
limit: int
offset: int
sort: str
total: int
class ResourceItemFile(BaseModel):
name: str
path: str
size: int
file: str
resource_id: str
created: datetime.datetime
modified: datetime.datetime
media_type: str
antivirus_status: str
comment_ids: dict
exif: dict
md5: str
mime_type: str
preview: str
revision: int
sha256: str
share: dict
type: Literal["file"]
class ResourceItemDir(BaseModel):
name: str
path: str
comment_ids: dict
created: datetime.datetime
exif: dict
modified: datetime.datetime
public_key: str
public_url: str
resource_id: str
revision: int
share: dict
type: Literal["dir"]
Why can't I specify multiple types in a List in pydantic?
How else can I specify that the items
field accepts two data types?
If there are ideas how differently I should implement it?
Now such a mistake:
File "pydantic\main.py", line 331, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 99 validation errors for Resource
embedded -> items -> 2 -> public_key
field required (type=value_error.missing)
embedded -> items -> 2 -> public_url
field required (type=value_error.missing)
embedded -> items -> 2 -> size
field required (type=value_error.missing)
embedded -> items -> 2 -> file
field required (type=value_error.missing)
embedded -> items -> 2 -> media_type
field required (type=value_error.missing)
embedded -> items -> 2 -> antivirus_status
field required (type=value_error.missing)
embedded -> items -> 2 -> md5
field required (type=value_error.missing)
embedded -> items -> 2 -> mime_type
field required (type=value_error.missing)
embedded -> items -> 2 -> preview
field required (type=value_error.missing)
embedded -> items -> 2 -> sha256
field required (type=value_error.missing)
embedded -> items -> 2 -> type
unexpected value; permitted: 'file' (type=value_error.const; given=dir; permitted=('file',))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我想我使用pedantic注释的解决方案
I think I found a solution using Annotated from pedantic
Python 3.10+以下方式可能有可能:
It is possible with python 3.10+ in the following way:
从python 3.10,您可以使用以下方式使用联合类型
From Python 3.10 you can use Union types in the following way