我们正在使用http://flask-admin.readthedocs.org/来快速管理界面。 我们的模型的约束定义如下:
__table_args__ = (
db.UniqueConstraint(user_id, role, domain_id),
db.UniqueConstraint(user_id, role, customer_id),
)
在调试模式下保存违反约束的记录时,应用会停止并带有回溯功能。如果不在调试模式下,它会在flash消息中报告错误并回滚事务。
这是所需的行为(即闪存消息和回滚)。用户做错了什么并且不会输入错误的数据:它不是一个应该显示回溯的错误。
优雅地处理此类异常的Flask方法是什么?我应该覆盖{create,update,delete}_model
的{{1}}方法吗?
答案 0 :(得分:1)
您可以实现on_model_change和on_model_delete函数。因此,您可以检查数据是否唯一,并在不满足约束的情况下提供更加用户友好的消息。以下是在删除/插入/更新操作之前检查某些约束的示例
class ExampleView(ModelView):
def on_model_delete(self, model):
#check constraint
def on_model_change(self, form, model, is_created):
#insert
if is created:
#check constraint
#update
else:
#check constraint