Django,创建具有添加用户权限的用户

0 投票
1 回答
1548 浏览
提问于 2025-04-16 00:22

我在使用Django的管理界面创建用户时遇到了一些奇怪的情况。

我想创建一个可以添加其他用户的用户,但Django要求这个用户必须拥有两个权限,也就是添加用户和修改用户。但是当我给这个用户修改权限后,他甚至可以修改网站的超级用户。

我想要的是创建一个只能创建其他用户的用户。

请给我一些建议。

提前谢谢你们。

1 个回答

0

在Django中,这个功能默认是没有的。你可以通过创建一个新的类,继承普通的UserAdmin,来制作自己的版本,这样就可以让非超级用户无法勾选“超级用户”这个选项框:

from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from django.contrib import admin

class MyUserAdmin(UserAdmin):

    def formfield_for_dbfield(self, db_field, **kwargs):
        field = super(MyUserAdmin, self).formfield_for_dbfield(db_field, **kwargs)
        user = kwargs['request'].user
        if not user.is_superuser:
            if db_field.name == 'is_superuser':
                field.widget.attrs = {'disabled': 'disabled'}
        return field

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)

撰写回答