将组添加到代理用户

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'))