20 lines
464 B
Python
20 lines
464 B
Python
from bson import ObjectId
|
|
|
|
|
|
class PyObjectId(ObjectId):
|
|
"""Custom ObjectId type for Pydantic to handle MongoDB _id"""
|
|
|
|
@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")
|