如何用Pydantic BaseModel将大小写不一致的用户输入转为snake_case?
解决Pydantic字段大小写不匹配的解析问题
针对输入字段大小写与模型snake_case字段不匹配导致无法解析的问题,有两种实用解决方式:
方法一:关闭字段大小写敏感性
在模型配置中设置case_sensitive=False,Pydantic会自动忽略输入字段名的大小写,匹配到对应模型字段:
from typing import Optional from pydantic import BaseModel class BookCreation(BaseModel): book_name: str book_size: Optional[str] book_author: str model_config = { "case_sensitive": False }
测试时,输入的book_SIZE会被正确映射到book_size字段,赋值为"23"。
方法二:自定义别名生成器(支持灵活字段名转换)
如果需要处理更复杂的字段名格式(比如驼峰转snake_case、混合大小写转snake_case),可以用Pydantic的AliasGenerator配合to_snake转换器,确保输入字段自动转为标准snake_case后匹配模型字段:
from typing import Optional from pydantic import BaseModel, AliasGenerator from pydantic.alias_generators import to_snake class BookCreation(BaseModel): book_name: str book_size: Optional[str] book_author: str model_config = { "alias_generator": AliasGenerator(validation_alias=to_snake), "populate_by_name": True }
该配置可将任意格式的输入字段名(如bookSIZE、BookSize)转换为snake_case格式,兼容性更强。
内容的提问来源于stack exchange,提问作者Siddarth Patil
相关产品推荐
相关产品推荐

