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

标签 django django-admin django-users

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

最佳答案

我可能迟到了回答这个问题,但无论如何,这里就是。 John 的概念是正确的,但我只是想这样做,因为我知道 django admin 非常灵活。

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

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

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

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

我遇到的问题是我曾经收到验证错误。我查看了回溯,发现 该错误是由于 UserAdminfieldsets 分组导致的,默认的 permission 字段集已在您的 user_permission 中覆盖了此设置子类模型管理员。

使用 get_form 中的 exclude 属性,您可以在其中访问 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

关于Django admin - 如何隐藏用户编辑中的某些字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6575999/

相关文章:

django - 为 Django 开发团队维护 MySQL 数据库的选项

python - 在convert_to_south之后应用程序显示为 "not synced"

python - 导入错误 : cannot import name force_text

python - 自定义 django 用户模型不一致的迁移历史错误

python - 如何在 django 项目的 settings.py 文件中将身份验证后端设置为默认(扩展 AbstractBaseUser 模型)

python - Nginx 使用带有 Gunicorn 的 Django 发送网络响应花费的时间太长

html - Django:<ul> 在字段的帮助文本中

django - django中业务逻辑放在哪里

python - Django - 在管理界面中向内联表单添加一个额外字段

python - 拉取用户名 - 'ManyRelatedManager' 对象不支持索引