来源:DeepSeek
1. 使用 .dict()方法(Pydantic v1 和 v2 都支持)
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
user = User(name="Alice", age=25)
user_dict = user.dict()
print(user_dict)
# 输出: {'name': 'Alice', 'age': 25}
2. 使用 .model_dump()方法(Pydantic v2 推荐)
在 Pydantic v2 中,推荐使用 .model_dump()
替代 .dict()
user_dict = user.model_dump()
print(user_dict)
3. 转换为 JSON 字典(包含 JSON 兼容的数据类型)
user_json_dict = user.model_dump_json()
# 这会返回 JSON 字符串,然后可以用 json.loads() 转为字典
import json
user_dict = json.loads(user_json_dict)
4. 包含或排除特定字段
# 只包含特定字段
partial_dict = user.dict(include={"name"}) # 只包含 name 字段
# 排除特定字段
partial_dict = user.dict(exclude={"age"}) # 排除 age 字段
5. 处理嵌套模型
class Address(BaseModel):
city: str
street: str
class UserWithAddress(BaseModel):
name: str
address: Address
user = UserWithAddress(name="Bob", address=Address(city="NY", street="5th Ave"))
print(user.dict())
# 输出: {'name': 'Bob', 'address': {'city': 'NY', 'street': '5th Ave'}}
6. Pydantic v2 中,.model_dump()
提供了更多选项
# 包含计算字段(computed fields)
user_dict = user.model_dump(include_computed=True)
# 排除未设置字段(默认值)
user_dict = user.model_dump(exclude_unset=True)
# 排除默认值
user_dict = user.model_dump(exclude_defaults=True)