将组添加到代理用户
Add group to Proxy User
我将 Django 与 Wagtail CMS 一起使用,我从 class 用户创建了两个代理模型。我想添加一个关于从代理 classes 创建用户的组。我尝试添加信号,但这显然不适用于代理模型。
保存后,我想将教师添加到 Teachers
组,将学生添加到 Students
#models.py
class User(AbstractUser):
class Types(models.TextChoices):
STUDENT = "STUDENT", "Student"
TEACHER = "TEACHER", "Teacher"
type = models.CharField(_('Type'), max_length=50, choices=Types.choices, default=Types.STUDENT)
class Student(User):
class Meta:
proxy: True
def save(self, *args, **kwargs):
if not self.pk:
self.type = User.Types.STUDENT
return super().save(*args, **kwargs)
class Teacher(User):
class Meta:
proxy: True
def save(self, *args, **kwargs):
if not self.pk:
self.type = User.Types.TEACHER
return super().save(*args, **kwargs)
您可以在 save
方法的末尾执行此操作:
class Student(User):
class Meta:
proxy: True
def save(self, *args, **kwargs):
creating = not self.pk
if creating:
self.type = User.Types.STUDENT
super().save(*args, **kwargs)
if creating:
self.groups.add(Group.objects.get(name='Students'))
我将 Django 与 Wagtail CMS 一起使用,我从 class 用户创建了两个代理模型。我想添加一个关于从代理 classes 创建用户的组。我尝试添加信号,但这显然不适用于代理模型。
保存后,我想将教师添加到 Teachers
组,将学生添加到 Students
#models.py
class User(AbstractUser):
class Types(models.TextChoices):
STUDENT = "STUDENT", "Student"
TEACHER = "TEACHER", "Teacher"
type = models.CharField(_('Type'), max_length=50, choices=Types.choices, default=Types.STUDENT)
class Student(User):
class Meta:
proxy: True
def save(self, *args, **kwargs):
if not self.pk:
self.type = User.Types.STUDENT
return super().save(*args, **kwargs)
class Teacher(User):
class Meta:
proxy: True
def save(self, *args, **kwargs):
if not self.pk:
self.type = User.Types.TEACHER
return super().save(*args, **kwargs)
您可以在 save
方法的末尾执行此操作:
class Student(User):
class Meta:
proxy: True
def save(self, *args, **kwargs):
creating = not self.pk
if creating:
self.type = User.Types.STUDENT
super().save(*args, **kwargs)
if creating:
self.groups.add(Group.objects.get(name='Students'))