3

MongoDB データを pydantic スキーマに解析しようとしていますが_id、スキーマから消えているように見えるフィールドを読み取ることができません。
この問題は、オブジェクト属性の前にあるアンダースコアに関連しています。_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']}
4

1 に答える 1

11

そのフィールド名のエイリアスを使用する必要があります

from pydantic import BaseModel, Field

class User_1(BaseModel):
    id: int = Field(..., alias='_id')

こちらのドキュメントを参照してください。

于 2020-01-02T12:11:17.787 に答える