创建带有别名的强制字段的Pydantic模型的方法如下:
class MedicalFolderUpdate(RWModel):
id : str = Field(alias='_id')
university : Optional[str]
如何添加可选字段大学的别名名称“school”,就像id一样?
class Figure(BaseModel):
name: str = Field(alias='Name')
edges: str = Field(default=None, alias='Edges')
没有默认值,它会出错,因为可选项没有覆盖字段的必填性和需要一个默认值。这是我在使用Pydantic与fast API管理mongo资源时克服这个问题的解决方案。
请尝试以下方法:
class MedicalFolderUpdate(RWModel):
id : str = Field(alias='_id')
university : Optional[str] = Field(alias='school')
Field
函数来指定可选字段的信息。此外,还必须通过在model Config
中设置allow_population_by_field_name
来启用别名的填充字段:
from typing import Optional
class MedicalFolderUpdate(BaseModel):
id: str = Field(alias='_id')
university: Optional[str] = Field(alias="school")
class Config:
allow_population_by_field_name = True
默认情况下,university
的值将为 None
。如果您希望在序列化为 JSON 或字典时排除未设置的值,可以按以下方式操作:
raw_data = {"id": "abc"}
row = MedicalFolderUpdate.parse_obj(raw_data)
# default, university is None
print(row.dict()) # {'id': 'abc', 'university': None}
# exclude from serialization
print(row.dict(exclude_unset=True)) # {'id': 'abc'}