如何从 pydantic 模型解析和读取“_id”字段?

问题描述 投票:0回答:1

用户类(BaseModel):

name : str
id : PydanticObjectId  = Field(None, alias='_id')

data = self.coll.find_one({"email": email})

        user = User(**data)
        return user 

现在,当我的数据从 mongo db 返回时,它是以 doc 字典的形式。 当我验证用户的元素时,我找不到任何名为 id 的字段。为什么会这样呢? 如果我替换 _id 中的 id,那么同样的问题仍然存在。

python-3.x mongodb class objectid pydantic
1个回答
0
投票

我知道你很久以前就问过这个问题了,但对于其他仍在努力解决这个问题的人来说,这是 MongoDb

提出的建议解决方案

应用他们的解决方案时,我们得到以下代码。

from typing import Optional, Annotated
from pydantic import BaseModel, Field, BeforeValidator

PyObjectId = Annotated[str, BeforeValidator(str)]

class User(BaseModel):
    name : str
    id: Optional[PyObjectId] = Field(alias="_id", default=None)

现在一切都应该按预期进行。

© www.soinside.com 2019 - 2024. All rights reserved.