[英]How to enforce constraints in `flask-admin`?
我們使用http://flask-admin.readthedocs.org/作為快速管理界面。 我們的模型具有如下定義的約束:
__table_args__ = (
db.UniqueConstraint(user_id, role, domain_id),
db.UniqueConstraint(user_id, role, customer_id),
)
在調試模式下保存違反約束的記錄時,應用程序會停止並進行回溯。 如果不在調試模式下,它會在快速消息中報告錯誤並回滾事務。
這是所需的行為(即閃現消息和回滾)。 用戶做錯了什么並且被保護不會輸入錯誤數據:這不是應該顯示回溯的錯誤。
優雅地處理此類異常的正確 Flask 方法是什么? 我應該重寫{create,update,delete}_model
的方法ModelView
?
您可以實現 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.