簡體   English   中英

如何在`flask-admin`中強制執行約束?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM