gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:36:45 27 4
gpt4 key购买 nike

如何隐藏管理员用户编辑中的字段?主要是我想隐藏某些异常(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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com