PydanticのBaseModelを継承したClassでvalidateなんて名前でメソッド作ってはいけない

2024-08-08

普通にBaseModel内にvalidateって名前のクラスメソッドある
(pydantic/main.pyL683)

ちなみにこの名前のメソッドを重複定義すると、FastAPIでAPI立てようとしたときに以下のエラーが出る。

Invalid args for response field! Hint: check that <class ここにクラスのパス> is a valid Pydantic field type. If you are using a return type annotation that is not a valid Pydantic field (e.g. Union[Response, dict, None]) you can disable generating the response model from the type annotation with the path operation decorator parameter response_model=None. Read more: https://fastapi.tiangolo.com/tutorial/response-model/

なおこれはV1の話
(V2ではmodel_validateってメソッド名になってるけど、既存のvalidateメソッドも残ってはいるので多分V2でも同様のエラー出る)

スポンサーリンク