gpt4 book ai didi

python - 如何在 Django 中创建继承自 AbstractUser 的多个 UserProfiles?

转载 作者:太空宇宙 更新时间:2023-11-03 20:58:33 25 4
gpt4 key购买 nike

原始问题

我想为 3 种类型的用户创建 3 个用户配置文件。起初,我做了一个 CharFiled 作为标记来区分它们,但后来我意识到我必须放置一些 ForeignKey 来关联这些用户。至于这一步,我不知道如何实现。

<小时/>

具体来说:

  • 继承自AbstractUser的3类用户,每种用户都可以登录系统
  • 它们之间有一个层次结构,很像:
AdminstratorA(not a superuser)
AdminstratorB
|--TeacherA
|--TeacherB
|--StudentA
|--StudentB|

以下是我的失败(简化版),使用Django2.1 python3.7

  • 遇到问题,因为我只能在 mysite\settings.py 处设置一个 AUTH_USER_MODEL = 'users.UserProfile'
apps\users\model

from django.contrib.auth.models import AbstractUser
from django.db import models

class AdministratorUser(AbstractUser):
pass


class TeacherUser(AbstractUser):
administrator = models.ForeignKey(AdministratorUser, on_delete=models.CASCADE)


class StudentUser(AbstractUser):
teacher = models.ForeignKey(TeacherUser, on_delete=models.CASCADE)
  • 我设置了主表和其他 3 个表作为补充。基于此,我基于xadmin设计了我的管理站点,但数据表现不佳。我对此一无所知。所以我尝试重新设计我的模型,这就是我在顶部描述的计划。
apps\users\model

from django.contrib.auth.models import AbstractUser
from django.db import models


class UserProfile(AbstractUser):
user_type_choices = (
('student', 'student'),
('teacher', 'teacher'),
('teacher', 'teacher'),
)
identity = models.CharField(choices=user_type_choices, max_length=100, default='student')


class AdministratorUser(models.Model):
user_profile = models.OneToOneField(UserProfile, on_delete=models.CASCADE)


class TeacherUser(models.Model):
user_profile = models.OneToOneField(UserProfile, on_delete=models.CASCADE)
administrator = models.ForeignKey(AdministratorUser, on_delete=models.CASCADE)


class StudentUser(models.Model):
user_profile = models.OneToOneField(UserProfile, on_delete=models.CASCADE)
teacher = models.ForeignKey(TeacherUser, on_delete=models.CASCADE)

最佳答案

这实际上取决于您想要实现的目标,但最简单的方法类似于 is_staffis_superuser标准中的字段User型号。

class UserProfile(AbstractUser):
is_type1_user = models.BooleanField(default=False)
is_type2_user = models.BooleanField(default=False)
is_type3_user = models.BooleanField(default=False)

关于python - 如何在 Django 中创建继承自 AbstractUser 的多个 UserProfiles?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55850719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com