gpt4 book ai didi

django - 如何在 django 中创建 2 级管理员用户,每个用户将只管理他创建的用户?

转载 作者:行者123 更新时间:2023-12-02 16:51:11 24 4
gpt4 key购买 nike

我需要创建超过 1 个管理员用户,他们只能管理他在 django 中创建的用户的角色/权限。这个管理员应该只能看到他创建的用户,而不是另一个用户创建的用户。简而言之,我希望将 django 用作我的客户的 SaaS 模型,他只能在其中管理他的员工/用户。这可能吗?具体如何实现?例如。管理员 A 可以为他的公司 A 创建用户并为他们设置角色,管理员 B 可以为他的公司 B 创建用户并设置他们的角色。但同时管理员 A 不应该能够看到管理员 B 创建的用户,反之亦然。

最佳答案

第一步。 django-admin 启动项目 twoadminproject

第二步。 cd twoadminproject

第 3 步。 python manage.py startapp twoadminapp

第四步。更改“twoadminapp”应用程序的 models.py:

from django.db import models
from django.contrib.auth.models import AbstractUser


class User(AbstractUser):
created_by = models.CharField(max_length=30, blank=True, null=True)

第 5 步。更改设置.py:

# Add you app in INSTALLED_APPS list

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'twoadminapp',
]

# Add one line at the end

AUTH_USER_MODEL = 'twoadminapp.User'

第 6 步。 python manage.py makemigrations

第七步。 python manage.py 迁移

第 8 步。 python manage.py createsuperuser(执行此命令两次以创建两个管理员用户)

第 9 步。更改“twoadminapp”应用程序的 admin.py:

from django.contrib import admin
from .models import User

# Register your models here.


class UserAdmin(admin.ModelAdmin):
def get_queryset(self, request):
users = super(UserAdmin, self).get_queryset(request)
return users.filter(created_by=request.user.username)


admin.site.register(User, UserAdmin)

因此,无论何时您从管理面板添加用户,您都必须在“添加用户表单”的创建者字段中填写管理员用户名,或者您可以在 forms.py 中初始化它

关于django - 如何在 django 中创建 2 级管理员用户,每个用户将只管理他创建的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58641952/

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