【发布时间】:2020-09-03 20:31:21
【问题描述】:
我想在我的自定义授权用户模型中创建一个超级用户。 这是我的models.py
class User(AbstractUser):
is_Admin = models.BooleanField(default=False)
is_HR = models.BooleanField(default=False)
is_MGR = models.BooleanField(default=False)
is_EMP = models.BooleanField(default=True)
class Admins(models.Model):
def __str__(self):
return self.user.username
user = models.OneToOneField(User, on_delete=models.CASCADE)
user.is_admin = True
first_name = models.CharField(max_length=256)
last_name = models.CharField(max_length=256)
我希望 Admins 模型能够访问所有用户数据,并访问 Django 管理页面。 以下是我的管理员创建视图 -
class AdminSignUpView(CreateView):
model = User
form_class = AdminSignUpForm
template_name = 'form1/signup_form.html'
def get_context_data(self, **kwargs):
kwargs['user_type'] = 'ADMIN'
return super().get_context_data(**kwargs)
def form_valid(self, form):
user = form.save()
return redirect('/P/login_page/')
管理员的表格是 -
class AdminSignUpForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = User
fname = forms.CharField(label = 'First Name', max_length=256)
lname = forms.CharField(label = 'Last Name', max_length=256)
@transaction.atomic
def save(self):
user = super().save(commit=False)
user.save()
user.is_Admin = True
user.save()
admin1 = Admins.objects.create(user=user)
admin1.first_name=(self.cleaned_data.get('fname'))
admin1.last_name=(self.cleaned_data.get('lname'))
return user
我已经好几周没弄明白了。我做错了什么吗? 我希望能够使用内置的 Django Auth UI 编辑、创建和删除用户,同时还维护我的自定义 Auth 模型,具有四个不同的层次结构。
【问题讨论】:
标签: python django django-authentication django-users