¿Cómo hacer cumplir las restricciones en `flask-admin`?

Estamos usando http://flask-admin.readthedocs.org/ para una interfaz de administración rápida. Nuestro modelo tiene limitaciones definidas de la siguiente manera:

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

Al guardar un registro que viola una restricción mientras se encuentra en el modo de depuración, la aplicación se detiene con un rastreo. Si no está en el modo de depuración, informa del error en un mensaje flash y revierte la transacción.

Este es el comportamiento deseado (es decir, mensaje flash y retrotracción). El usuario hizo algo mal y estaba protegido contra la introducción de datos incorrectos: no es un error que deba mostrar un rastreo.

¿Cuál es la forma correcta de Frask de manejar estas excepciones con elegancia? ¿Debería reemplazar los métodos {create,update,delete}_model de ModelView ?

Puede implementar las funciones on_model_change y on_model_delete. Por lo tanto, puede verificar si los datos son únicos y dar un mensaje más fácil de usar en caso de que no se cumpla una restricción. Aquí hay un ejemplo de verificación de algunas restricciones antes de la operación de eliminar / insertar / actualizar

 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