3

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

4

2 回答 2

9

我可能会迟到回答这个问题,但无论如何,这里有。John 在概念上是正确的,但我只是想这样做,因为我知道django admin它真的很灵活。

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

1. exclude类的属性ModelAdmin可以用来隐藏字段。

2:应该允许模型中的空白。

3: default模型字段上的属性是一个优势,否则您可能会遇到意外错误。

我遇到的问题是我曾经遇到过验证错误。我查看了回溯,发现错误是由于UserAdmin'fieldsets分组,默认permission字段集user_permission在您的子分类模型管理员中覆盖了它。

在您可以访问变量的地方使用该exclude属性,您可以根据用户的权限或组将其动态设置。get_formrequest

代码:

管理员.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
于 2012-03-21T14:15:32.077 回答
-4

django admin 不是为非常细粒度的控制而设计的,因此它们不是为允许这种类型的控制而设计的自动变量。

如果您需要这种类型的控制,您将不得不自己动手。您需要覆盖默认的管理模板。您可能希望使用权限系统来跟踪允许用户执行的操作。

请记住您正在进行的自定义级别。在某些时候,远远超出管理应用程序的预期目的和限制将比简单地滚动您自己的更细粒度的 CRUD 系统更多工作。

于 2011-07-04T23:03:56.717 回答