首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从AbstractUser继承后,Django admin不能再更改用户的权限

。AbstractUser是Django框架中提供的一个抽象用户模型,用于扩展默认的用户模型。当我们从AbstractUser继承创建自定义用户模型后,Django admin默认的用户管理界面将无法更改用户的权限。

在Django中,用户权限是通过权限系统来管理的。权限系统允许管理员为用户分配不同的权限,以控制其对系统资源的访问和操作。然而,当我们使用AbstractUser创建自定义用户模型后,Django admin默认的用户管理界面将不再显示权限相关的选项,因此无法直接更改用户的权限。

要解决这个问题,我们可以通过自定义用户管理界面来实现更改用户权限的功能。具体步骤如下:

  1. 创建一个自定义的用户管理界面(admin.py文件):
代码语言:txt
复制
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import Permission

from .models import CustomUser

class CustomUserAdmin(UserAdmin):
    model = CustomUser
    list_display = ('username', 'email', 'is_staff', 'is_active',)
    list_filter = ('is_staff', 'is_active',)
    fieldsets = (
        (None, {'fields': ('username', 'password')}),
        ('Personal Info', {'fields': ('email',)}),
        ('Permissions', {'fields': ('is_staff', 'is_active',)}),
    )
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'password1', 'password2', 'is_staff', 'is_active',),
        }),
    )
    search_fields = ('username', 'email',)
    ordering = ('username',)

admin.site.register(CustomUser, CustomUserAdmin)
admin.site.register(Permission)
  1. 在settings.py文件中指定自定义的用户模型和用户管理界面:
代码语言:txt
复制
AUTH_USER_MODEL = 'your_app.CustomUser'

通过以上步骤,我们创建了一个自定义的用户管理界面CustomUserAdmin,并将其注册到Django admin中。在这个自定义界面中,我们可以通过设置list_display、list_filter、fieldsets等属性来定义显示的字段和过滤选项。同时,我们也可以通过add_fieldsets属性来定义添加用户时的字段。

需要注意的是,自定义用户管理界面中的权限相关选项是通过注册Permission模型来实现的。在上述代码中,我们通过admin.site.register(Permission)将权限模型注册到Django admin中,以便在用户管理界面中显示权限相关选项。

总结:通过从AbstractUser继承创建自定义用户模型后,Django admin默认的用户管理界面无法更改用户的权限。为了解决这个问题,我们可以通过自定义用户管理界面和注册权限模型来实现更改用户权限的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券