Open2

Pydantic(v2)でリレーション先の項目をセットさせたい。

Atsushi NakajoAtsushi Nakajo

セットしたい項目がリレーションの先にあるケース

こういうスキーマがあり、

class User:
  id: int
  email: str
  name: str

DBのモデルは、UserとAuthに分離されているイメージ

class AuthDB:
  id: int
  email: str

class UserDB:
  id: int
  name: str
  auth: AuthDB
  auth_id: int

UserDBをjoinでfetchする前提で、User.emailにuser.auth.emailを自動的にセットさせたい。

Atsushi NakajoAtsushi Nakajo

validation_alias でOK
オブジェクトパスは AliasPathで実現

from pydantic import AliasPath
email: str = Field(validation_alias=AliasPath("user", "auth", "email"))