gpt4 book ai didi

python - Flask Admin 多个字段的自定义表单验证?

转载 作者:太空狗 更新时间:2023-10-30 01:00:52 27 4
gpt4 key购买 nike

我一直打算创建一个基于多个字段值的自定义表单验证逻辑(在我的例子中,有 2 个字段来确保日期范围数据的完整性,即 start_time < end_time)。但是,翻阅 flask 管理站点上的文档,我找不到任何地方可以做这类事情。我知道您可以非常简单地将验证函数列表传递给 baseModelView 类的子类中的 form_args 属性的 validators 参数,但同样,这不是我想要的每字段验证。

所以我的问题是:如何同时验证多个字段?

此外,我没有看到任何预保存 Hook 事件函数可以用来执行此操作。我知道 on_model_change 但它是一个保存后 Hook ,将验证放在那里会破坏验证的目的。进行预保存操作的合适方法是什么?

最佳答案

所以在试验并尝试了几种不同的方法之后,我进行多表单域验证的方式仍然是 Hook on_model_change我知道它说在进行更改后调用事件 Hook - 但是,由于它已包装在事务中,因此可以引发任何异常以回滚事务。

这是我的示例代码,可以让它正常工作。

from flask.ext.admin.form import rules
from wtforms import validators

class TimeWindowView(LoggedInView):
column_filters = ('scheduled_start', 'scheduled_end')
form_create_rules = [
rules.Field('scheduled_start'),
rules.Field('scheduled_end'),
]

def on_model_change(self, form, model, is_created):
# if end date before start date or end date in the past, flag them invalid
if (form.scheduled_end.data <= form.scheduled_start.data or
form.scheduled_end.data <= datetime.datetime.utcnow()):
raise validators.ValidationError('Invalid schedule start and end time!')
else:
super().on_model_change(form, model, is_created)

关于python - Flask Admin 多个字段的自定义表单验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31663606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com