SQLAlchemy验证和额外参数

2024-04-23 15:16:17 发布

您现在位置:Python中文网/ 问答频道 /正文

根据SQLAlchemy文档,我知道我可以使用在模型列上设置验证器:

def validate_phone(target, value, oldvalue, initiator):
    "Strip non-numeric characters from a phone number"

    return re.sub(r'(?![0-9])', '', value)  

# setup listener on UserContact.phone attribute, instructing
# it to use the return value 
listen(UserContact.phone, 'set', validate_phone, retval=True)

但我想将额外的参数传递给验证器,例如:

^{pr2}$

我必须如何在侦听器中配置这个验证器,以便它接受额外的参数beginend?在


Tags: 文档模型targetreturnsqlalchemyvaluedefphone
1条回答
网友
1楼 · 发布于 2024-04-23 15:16:17

好的,我通过在列定义中添加一个参数来解决这个问题(我已经定义了一个从Column继承来添加额外参数的RsColumn类),该类包含一个dict,校验器函数名和可选参数为kwargs。在

当我的应用程序启动时,它会解析所有模型并检查是否在

validators=[
     {
         "function": "myvalidatorname", 
         "kwargs": {"arg1": 1, "args": "someotherargument"}
     },
     { ... }
]

—列中的参数。它在“set”上设置一个监听器,该监听器执行函数“execute_field_validations”,该函数再次解析字段中的所有“validators”,并在给定参数的情况下选择性地执行它们。在

^{pr2}$

相关问题 更多 >