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

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

在Django中创建2级管理员用户,其中每个用户只能管理他创建的用户,可以通过以下步骤实现:

  1. 首先,在Django项目中创建一个自定义的User模型,该模型继承自AbstractUserAbstractBaseUser,并添加一个字段用于指定用户的上级管理员。
代码语言:txt
复制
from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    manager = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
  1. 在项目的settings.py文件中,将自定义的User模型设置为默认的认证用户模型。
代码语言:txt
复制
AUTH_USER_MODEL = 'your_app.CustomUser'
  1. 创建一个自定义的管理器(Manager)来过滤每个管理员用户所管理的用户。
代码语言:txt
复制
from django.contrib.auth.models import UserManager

class CustomUserManager(UserManager):
    def get_queryset(self):
        queryset = super().get_queryset()
        if not self.request.user.is_superuser:
            queryset = queryset.filter(manager=self.request.user)
        return queryset
  1. 在每个需要使用管理员用户管理用户的视图函数中,使用自定义的管理器来过滤用户。
代码语言:txt
复制
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from your_app.models import CustomUser

@login_required
def user_list(request):
    users = CustomUser.objects.all()
    return render(request, 'user_list.html', {'users': users})
  1. 创建一个表单用于创建用户,并在表单中设置当前登录用户为上级管理员。
代码语言:txt
复制
from django import forms
from your_app.models import CustomUser

class UserCreationForm(forms.ModelForm):
    class Meta:
        model = CustomUser
        fields = ['username', 'password', 'manager']
        widgets = {'manager': forms.HiddenInput()}
    
    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request')
        super().__init__(*args, **kwargs)
        self.fields['manager'].initial = self.request.user
  1. 在创建用户的视图函数中,使用自定义的表单来创建用户。
代码语言:txt
复制
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect
from your_app.forms import UserCreationForm

@login_required
def create_user(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST, request=request)
        if form.is_valid():
            form.save()
            return redirect('user_list')
    else:
        form = UserCreationForm(request=request)
    return render(request, 'create_user.html', {'form': form})

通过以上步骤,你可以在Django中创建2级管理员用户,其中每个用户只能管理他创建的用户。请注意,以上代码仅为示例,你可能需要根据你的具体需求进行适当的修改和调整。

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

相关·内容

没有搜到相关的视频

领券