2015-05-04 87 views
1

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

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

当保存操作违反了约束,而在调试模式,应用程序与回溯停止记录。如果不在调试模式下,它会在闪存消息中报告错误并回退事务。

这是所需的行为(即Flash消息和回滚)。用户做了错误的事情,并防止输入错误的数据:这不是一个应该显示回溯的错误。

优雅地处理这种异常的正确方法是什么?我是否应该重写ModelView{create,update,delete}_model方法?

+0

我不能得到的UniqueConstraint工作之前检查一些约束的例子,可以请你分享的语法,如果可能的话,TIA。也引发http://stackoverflow.com/questions/30779466/flask-admin-unique-constraint-on-multiple-columns-is-not-working – user2390183

回答

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