如何在“flaskadmin”中强制约束?

2021-04-11 23:44:00 发布

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

我们使用http://flask-admin.readthedocs.org/作为快速管理界面。 我们的模型的约束定义如下:

__table_args__ = (
        db.UniqueConstraint(user_id, role, domain_id),
        db.UniqueConstraint(user_id, role, customer_id),
        )

在调试模式下保存违反约束的记录时,应用程序将停止回溯。如果不在调试模式下,它会在flash消息中报告错误并回滚事务。在

这是所需的行为(即flash message和rollback)。用户做错了什么,并且受到保护,不能输入错误数据:这不是应该显示回溯的错误。在

怎样才能优雅地处理这些异常呢?我应该重写ModelView{create,update,delete}_model方法吗?在

1条回答
网友
1楼 ·

你可以在模型u上执行函数。因此,您可以检查数据是否是唯一的,并在约束不满足的情况下给出更友好的消息。下面是在执行delete/insert/update操作之前检查一些约束的示例

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

相关问题