2012-11-27 84 views

回答

0

我會考慮創建自己的自定義視圖來添加自定義權限,而不是試圖修改Django管理員。但是,如果您確定要使用Django管理員,則可以嘗試以下方法:

從子類UserChangeForm開始,並覆蓋__init__方法。使用包含您的自定義權限的查詢集設置self.fields['user_permissions'].queryset

from django.contrib.auth.forms import UserChangeForm 

class MyUserChangeForm(UserChangeForm): 
    def __init__(self, *args, **kwargs): 
     super(MyUserChangeForm, self).__init__(*args, **kwargs) 
     custom_permissions = ???? 
     self.fields['user_permissions'].queryset = custom_permissions 

接下來,子類django.contrib.auth.admin.UserAdmin,並使用您的形式,而不是UserChangeForm

from django.contrib.auth.admin import UserAdmin 

class MyUserAdmin(UserAdmin): 
    form = MyUserChangeForm 

最後,取消註冊默認UserAdmin,並註冊您自己的。

admin.site.unregister(User) 
admin.site.register(User, MyUserAdmin) 
+0

我會用你自己建議的自定義視圖做tnx。 – kodmasin

相關問題