在Django中创建2级管理员用户,其中每个用户只能管理他创建的用户,可以通过以下步骤实现:
AbstractUser
或AbstractBaseUser
,并添加一个字段用于指定用户的上级管理员。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)
settings.py
文件中,将自定义的User模型设置为默认的认证用户模型。AUTH_USER_MODEL = 'your_app.CustomUser'
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
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})
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
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级管理员用户,其中每个用户只能管理他创建的用户。请注意,以上代码仅为示例,你可能需要根据你的具体需求进行适当的修改和调整。
领取专属 10元无门槛券
手把手带您无忧上云