我有下一個枚舉:class EStatus(enum.IntEnum): NEW = 0 MODIFIED = 1和架構(gòu):ARGS = { 'status': EnumField(EStatus, by_value=True, required=False)}在 Flask 中我聲明了 GET 方法webargs:@use_args(ARGS, location='query')def get(self, args: Dict[str, any]): return []它失敗并出現(xiàn)錯誤:{'messages': {'query': {'status': ['Invalid enum value 1']}}, 'schema': <GeneratedSchema(many=False)>, 'headers': None}我在調(diào)試器中檢查過它,發(fā)現(xiàn)EnumField調(diào)用了EStatus(value). 問題是我的值是str類型,因為它來自查詢參數(shù)。如何在通話之前將EnumField其投射到?intEStatus(value)
1 回答

RISEBY
TA貢獻1856條經(jīng)驗 獲得超5個贊
class EStatus(enum.IntEnum):
NEW = 0
MODIFIED = 1
@staticmethod
def from_str(e_status: str):
e_status = e_status.upper()
if e_status in EStatus.__members__:
return EStatus[e_status]
else:
raise ValueError(f'{e_status} is not a valid EStatus.')
#You can use above from_str like below,
EStatus e_status = EStatus.from_str('NEW')
print(e_status.name)
print(e_status.value)
希望對于您的問題,您應(yīng)該能夠使用 from_str staticmethod 將 str 轉(zhuǎn)換為 Enum 類型。
添加回答
舉報
0/150
提交
取消