我有一个确认字段,接受用户的“是”(不区分大小写)输入。这就是我的实现方式:
class ConfirmEnum(str, Enum):
yes = "yes"
Yes = "Yes"
YES = "YES"
class OtherFields(CamelModel):
data: int
confirm: Optional[ConfirmEnum]
...other fileds added here
async def pet_classes(
pet_service: PetService = Depends(
PetService
),
confirm: ConfirmEnum = Query(None, alias="confirm"),
response: Response = status.HTTP_200_OK,
):
我认为这不是正确的方法,或者一定有比仅使用枚举更好的方法。
我无法评论 Pydantic,但你的枚举应该是:
class ConfirmEnum(str, Enum):
YES = "YES"
#
@classmethod
def _missing_(cls, value):
try:
return cls[value.upper()]
except KeyError:
pass
使用
try/except
是为了在使用无效密钥时不会出现双堆栈跟踪。