Pydantic Field Alias
- field name은 python 내부 변수로 사용
- field alias는 init에 들어가는 parameter로 사용
- 원래는 alias로만 init이 되지만,
allow_population_by_field_name = True로 하면 field name으로도 init이 된다.
Example
from pydantic import BaseModel
class UserSchema(BaseModel):
user_name = Field(alias="userName")
> O : user_schema = UserSchema(userName="lullu")
> X : user_schema = UserSchema(user_name="lullu")
class UserSchema2(BaseModel):
user_name = Field(alias="userName")
class Config:
allow_population_by_field_name = True
> O : user_schema = UserSchema(userName="lullu")
> O : user_schema = UserSchema(user_name="lullu")
django-ninja view에서 사용
from ninja import Schema, Field
class ViewParamsPython(Schema):
id_string: str = Field(alias="idString")
class Config:
allow_population_by_field_name = True
class ViewParamsJS(Schema):
idString: str = Field(alias="id_string")
class Config:
allow_population_by_field_name = True
@api.post("/view_python", tags=["view_test"])
def view_python(request, params: ViewParamsPython):
return ViewParamsPython(id_string=params.id_string + "_response")
"""
request:
{
"idString": "string"
}
response:
{
"id_string": "string_response"
}
"""
@api.post("/view_js", tags=["view_test"])
def view_js(request, params: ViewParamsJS):
return ViewParamsJS(idString=params.idString + "_response")
"""
request:
{
"id_string": "string"
}
response:
{
"idString": "string_response"
}
"""