发布于2024-11-25 16:39 阅读(95) 评论(0) 点赞(21) 收藏(2)
我正在使用 Pydantic 在 Python 项目中进行数据验证,在指定可选字段时遇到了问题BaseModel
。
from pydantic import BaseModel
class MyModel(BaseModel):
author_id: int | None # Case 1: throws error
author_id: Optional[int] # Case 2: throws error
author_id: int = None # Case 3: works
现在,在请求接受上述模型作为其 JSON 主体的端点时,我没有author_id
在请求中提供该字段。
当我使用 时author_id: int | None
,我收到一条错误消息,提示缺少必填字段。但是,如果我将其更改为author_id: Optional[int]
,我会遇到相同的错误。但是当我使用author_id: int = None
或 时author_id: Optional[int] = None
,模型可以按预期工作而不会出现错误。(如果=
存在则工作)
您对如何在 Pydantic 模型中正确定义可选字段有什么建议吗?是否有特定版本的 Pydantic(或其他库)正确支持 int | None 语法?
出现错误的原因是没有默认值。注释本身实际上不执行任何操作。
下面的所有选项都有效,而且它们在底层基本相同。现在建议仅使用 Python 3.10+ 的项目使用第三个选项
from pydantic import BaseModel
class MyModel(BaseModel):
author_id: Optional[int] = None # the original way
author_id: Union[int, None] = None # another option
author_id: int | None = None # more modern option (Python 3.10+)
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/2045888/cddd623086369f8f60d5/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!