簡體   English   中英

在django admin中有條件地注銷或注冊模型

[英]unregister or register models conditionally in django admin

是否可以在django admin中有條件地注冊或取消注冊模型? 我想要一些模型出現在django admin中,只有在請求滿足某些條件時才會出現。 在我的特定情況下,我只需要檢查登錄用戶是否屬於特定組,如果用戶(即使超級用戶)不在組中,則不顯示模型。 我不能在這里使用權限,因為不能使用權限排除超級用戶。 或者,有沒有辦法撤銷甚至超級用戶對模型的許可。

可以在ModelAdmin動態管理模型的權限。 重寫方法has_add-permissionhas_change_permissionhas_delete_permission

class MyModelAdmin(admin.ModelAdmin):
    def has_add_permission(self,request):
        # if request satisfies conditions:
        #   return True
        #else:
        #   return False

其他兩種方法也是如此。 這也適用於superuser 如果您撤消所有三個權限, MyModel將不會在管理網站上列出。

如果您只需要隱藏管理站點中的model條目,只需覆蓋get_model_perms方法即可。 您不必覆蓋權限方法。

def get_model_perms(self, request):
    return {}

但是,此方法不會撤消model權限。 即使模型未在管理站點上列出,也可以通過輸入url來訪問它。

我在本地嘗試了幾種方法,包括覆蓋AdminSite,但考慮到在初始化應用程序時加載了所有與管理員相關的代碼,最簡單的方法是依賴權限(而不是給每個人超級用戶訪問權限) 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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