django - 将组添加到代理用户
问题描述
我将 Django 与 Wagtail CMS 一起使用,并从 User 类创建了两个代理模型。我想从代理类中添加一个用户创建组。我试图添加信号,但这显然不适用于代理模型。
因此,在保存时,我想将教师添加到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'))
推荐阅读
- ios - iOS 12 中的相机在没有相机权限的情况下工作对话框
- javascript - 如何在 Hover 上制作 React 动画?
- css - 为什么在 css 中使用 :hover 时这个导航栏悬停不起作用?
- python - 需要帮助使用 python list 为以下输入生成输出
- python-3.x - 网址在 chrome 中启动,但在 Firefox 中我收到错误
- apache - 只有全球 IP 地址的网站应该是 ssl 吗?
- javascript - 单击按钮使用 Angular 导航 Bootstrap 选项卡
- linux - 如何打印两个/多个匹配行?
- javascript - RXJS 中的条件连接?
- swift - 动画变换仅适用于超级视图