【发布时间】:2022-01-18 18:49:18
【问题描述】:
我正在尝试为函数的输入输出创建某种动态验证:
from pydantic import ValidationError, BaseModel
import numpy as np
class ValidationImage:
@classmethod
def __get_validators__(cls):
yield cls.validate
@classmethod
def validate(cls, v):
if not isinstance(v, np.ndarray):
raise TypeError("np.ndarray required")
return v
class TestModel(BaseModel):
image: ValidationImage
def validate(msg, model):
try:
message = model(image=msg)
except ValidationError as e:
return e
testimg = np.zeros([0])
print(validate(testimg, TestModel))
但问题是,此时 message = model(image=msg) 我确实需要知道模型内部有 image 字段作为 validate 函数的参数。
我想在不知道实际字段名称的情况下以某种方式创建模型实例(可能来自列表?)
我试过message = model(msg) - 不起作用。我想知道是否可以这样做?或者有什么解决办法?
更新#1:
我可以使用list(model.__fields__.keys())[0] 获取字段名称,但我不知道如何使用str 作为实际代码。而且这似乎是一种不好的做法
【问题讨论】: