我正在尝试将MongoDB数据解析为一个pydantic模式,但是无法读取它的_id
字段,该字段似乎从该模式中消失了。
这个问题肯定与object属性前面的下划线有关。我无法更改_id
字段名称,因为那将意味着根本不解析该字段。
请在下面找到我使用的代码(为简化起见,使用int
代替ObjectId
)
from pydantic import BaseModel
class User_1(BaseModel):
_id: int
data_1 = {"_id": 1}
parsed_1 = User_1(**data_1)
print(parsed_1.schema())
class User_2(BaseModel):
id: int
data_2 = {"id": 1}
parsed_2 = User_2(**data_2)
print(parsed_2.schema())
User_1
已成功解析,因为其_id
字段是必填字段,但以后无法读取。
User_2
在上面的示例中有效,但如果连接到Mongo则失败,它仅提供id
而不提供任何_id
字段。
上面的代码输出如下:
User_1 {'title': 'User_1', 'type': 'object', 'properties': {}}
User_2 {'title': 'User_2', 'type': 'object', 'properties': {'id': {'title': 'Id', 'type': 'integer'}}, 'required': ['id']}
答案 0 :(得分:1)
您需要为该字段名称使用别名
from pydantic import BaseModel, Field
class User_1(BaseModel):
id: int = Field(..., alias='_id')
请参阅文档here。