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

时间:2010-06-24 11:01:16

标签: python django

使用Django管理界面创建用户时,我遇到了一个奇怪的行为。 我必须创建一个可以添加其他用户的用户,但是为此Django需要两个权限,即添加用户和更改用户。但是当我给用户更改权限时,它甚至能够更改站点的超级用户。

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

请建议。

提前致谢。

1 个答案:

答案 0 :(得分:0)

Django默认不支持此功能。您可以继承正常的UserAdmin并创建自己的UserAdmin,为非超级用户禁用“超级用户”--checkbox:

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)