我想获取已分别在 obj (基本模型)中使用嵌套 obj 初始化的属性列表。
我有下一个代码:
from pydantic import BaseModel
class Parameters(BaseModel):
id: int
sender_id: int = None
class Options(BaseModel):
notification: bool = False
protect: bool = False
parameters: Parameters = None
opt = Options(protect=True, parameters=Parameters(id=1))
print(opt.model_fields_set)
# >>> {'protect', 'parameters'}
print(opt.model_dump(include=opt.model_fields_set)) # or
# print(opt.model_dump(include=opt.model_fields_set | {"id"}))
# >>> {'protect': True, 'parameters': {'id': 1, 'sender_id': None}}
我只想获取我明确指定的那些属性{'protect': True, 'parameters': {'id': 1}}
。
目前,我已经实现了一个函数,递归地遍历并收集必要的属性
def initialized_fields(cls):
init_fields = {}
for field in cls.model_fields_set:
attr = getattr(cls, field)
if isinstance(attr, BaseModel):
init_fields[field] = initialized_fields(attr)
else:
init_fields[field] = attr
return init_fields
请告诉我该怎么做?
谢谢。
您可以使用
exclude_unset
选项: