Django admin - 如何隐藏用户编辑中的某些字段?

rob*_*s85 3 django django-admin django-users

如何在管理员用户编辑中隐藏字段?主要是我想在某些例外中隐藏权限和组选择,但排除变量不起作用:/

Pan*_*nnu 9

我可能会迟到回答这个问题,但不管怎么说.约翰在概念上是正确的,但我只想这样做,因为我知道这django admin是真正灵活的.

用户模型表单中隐藏字段的方式是:

1. 类的exclude属性ModelAdmin可用于隐藏字段.

2:模型中应该允许空白.

3: default模型字段的属性是一个优势,或者您可能会遇到意外错误.

我遇到的问题是我曾经得到验证错误.我看了看追溯,并发现该错误是由于UserAdminfieldsets分组,默认permission字段集具有user_permission在子calassed模型管理覆盖.

使用您可以访问变量的exclude属性get_form,您可以request根据用户的权限或组将其设置为动态.

码:

admin.py:

class MyUserAdmin(UserAdmin): 

     list_display = ("username","first_name", "last_name", "email","is_active","is_staff","last_login","date_joined")

     ## Static overriding 
     fieldsets = (
         (None, {'fields': ('username', 'password')}),
         (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
         (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
                                    'groups')}),
     (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
     )


     def get_form(self, request, obj=None, **kwargs):
         self.exclude = ("user_permissions")
         ## Dynamically overriding
         self.fieldsets[2][1]["fields"] = ('is_active', 'is_staff','is_superuser','groups')
         form = super(MyUserAdmin,self).get_form(request, obj, **kwargs)
         return form
Run Code Online (Sandbox Code Playgroud)