相关疑难解决方法(0)

在 Pydantic v2 中使用 bson.ObjectId

我找到了一些有关如何在BaseModel类中使用 ObjectId 的示例。基本上,这可以通过创建 Pydantic 友好的类来实现,如下所示:

class PyObjectId(ObjectId):
    @classmethod
    def __get_validators__(cls):
        yield cls.validate

    @classmethod
    def validate(cls, v):
        if not ObjectId.is_valid(v):
            raise ValueError("Invalid objectid")
        return ObjectId(v)

    @classmethod
    def __modify_schema__(cls, field_schema):
        field_schema.update(type="string")
Run Code Online (Sandbox Code Playgroud)

然而,这似乎适用于 Pydantic v1,因为该机制已被__get_pydantic_core_schema__classmethod 取代。但是,我无法使用 Pydantic v2 实现等效的解决方案。有可能吗?我需要什么验证器?我尝试重构一些东西,但无法得到任何可用的东西。

python bson pydantic

9
推荐指数
4
解决办法
5982
查看次数

标签 统计

bson ×1

pydantic ×1

python ×1