Я нашел несколько примеров о том, как использовать ObjectId в классах BaseModel . По сути, это может быть достигнуто путем создания класса, благоприятного для пидантика следующим образом: < /p>
Код: Выделить всё
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")
Однако это, по -видимому, для Pydantic V1, так как этот механизм был заменен __get_pydantic_core_schema __ classmethod. Тем не менее, я не смог достичь эквивалентного решения с Pydantic V2. Является ли это возможным? Какие валидаторы мне нужны? Я пытался рефакторировать вещи, но не смог получить что -либо пригодное для использования.
Подробнее здесь:
https://stackoverflow.com/questions/766 ... ydantic-v2