我正在研究结合 PeeWee 后端 ModelView 的 Flask-Admin(但我的问题也可能适用于 SQLAlchemy 后端),在文档或示例中我找不到两件事:
(1)。当我的模型有一个唯一字段并且我测试/尝试复制它时,我会得到一个默认的 Flask 崩溃屏幕,并显示消息:“IntegrityError:列用户名不是唯一的”
我正在测试https://github.com/mrjoes/flask-admin/blob/master/examples/peewee/simple.py中提供的 PeeWee 示例,并将第 21 行更改为“username = peewee.CharField(max_length= 80,唯一=真)”
然后我尝试用“username”=“user1”添加两个用户。
有没有一种礼貌的方法可以返回编辑屏幕(甚至是列表屏幕,任何管理屏幕都可以)但带有受控的错误消息?我不需要自定义错误消息,当前消息正常(IntegrityError:列用户名不是唯一的)。但我不想要崩溃屏幕。
我可以设置/使用 Flask 的默认 500 页面,但是我会完全退出 Flask-Admin 流程,用户会“错过”他刚刚输入的数据。
我想回到编辑屏幕,但有某种警报/错误消息。我不介意必须扩展模板,这不是问题。但是我找不到一个地方来拦截错误并正确处理它。有什么建议么?
(2):
我还需要一种在流程中添加一些预保存验证的方法。例如,我处于具有 initial_date 和 final_date 的实体的编辑表单中,我想在保存之前确保 final_date 大于 initial_date 或为空。
我可以通过 javascript 在客户端执行此操作,扩展该实体的编辑模板并在尾部块中添加我的验证脚本(并拦截 form.submit 事件)。
但是,如果我的验证需要一些服务器端的最后一分钟验证怎么办?有什么方法/地方可以拦截流程并添加我的验证,幸运的是,以问题 1 中讨论的相同方式返回我的错误消息?
提前致谢,
问候,