如何获取Pydantic v1.10模型中标记exclude=True的字段
解决Pydantic v1.10获取exclude=True字段的问题
在Pydantic v1.10里,想要拿到标记了exclude=True的字段,其实不用绕远路——带该标记的字段仍存在于模型的__fields__中,只是默认不会出现在schema里,直接遍历就能筛选出来。
具体操作方法:
- 遍历目标模型的
__fields__.values(),每个元素都是ModelField对象 - 检查每个
ModelField的exclude属性,值为True的就是被标记排除的字段
举个实际代码例子:
from pydantic import BaseModel, Field class MyModel(BaseModel): field_1: str field_2: int field_3: bool = Field(exclude=True) # 筛选所有标记exclude=True的字段名 excluded_fields = [field.name for field in MyModel.__fields__.values() if field.exclude] print(excluded_fields) # 输出: ['field_3']
如果是要在序列化时自动排除这些字段,直接用模型的dict()或json()方法即可,它会自动识别exclude=True的字段并跳过,无需手动处理。
内容的提问来源于stack exchange,提问作者HuLu ViCa
相关产品推荐
相关产品推荐

