2013年12月18日 星期三

在Django Admin中禁止使用者增加或刪除資料的方法

Django的Admin Panel幫我們把常用的CRUD都整合到裡面了,實在是一個很方便的功能,但在一般網站的應用還沒有什麼問題,不過在我們的應用上,是將Django當成一個App server的backend,所以有一些資料的內容是會相依到另外一筆資料列。若使用者手動在後台增加資料列,有可能會發生一些未預期的錯誤,所以我們必需在後台中以程式手動將這樣的功能關閉。
拜了Google大神與參考了官方文件後,找到了方法。以下為詳細的做法:

def has_add_permission(self, request):
  return False
def has_delete_permission(self, request, obj=None):
  return False

只要在admin.ModelAdmin中覆寫到這兩個方法即可。不過ModelAdmin.has_change_permission這個方法不可以傳回False,不然會連List都沒有辦法顯示。

但依我們還有一些更進一步的需求,例如報表整合與管理工具等等的需求。一直以來都沒有好好的讀過The Admin這個區塊的文件,應該花一點時間好好的來讀一下。

沒有留言:

張貼留言