用多个用户auth mod替换Django中的用户模型

2024-05-19 15:39:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个应用程序,它将有两种类型的用户教师和学生。他们都可以连接到我的门户,但他们有不同的权限。他们也有不同的领域(教师有姓名、研究领域、研究生学习等领域,学生有姓名、家长姓名、他在上哪门课等)。我想扩展用户模型并创建两种类型的用户,如上所述。我在this上讨论了如何使用AUTH_user_模型扩展用户模型,并由AbstractBaseUser继承,从而在应用程序中创建:

class MyUser(AbstractBaseIser):
    #custom user fields

通过设置

^{pr2}$

在设置文件中。在

但如果我理解正确,它只能发生在一个自定义用户。对我想要的更好吗

user = models.OneToOneField(User)

在我的自定义用户模型中(例如教师)?除了字典,AUTH_USER_模型可以区分两种类型的用户吗?由于doc说如果使用OneToOnField,那么使用OneToOneField会有多大的影响

抱歉,我没有提供我自己的任何代码,因为我还没有编写任何代码。我想在实施某项措施之前先为我澄清这个问题。在


Tags: 代码用户模型auth应用程序权限类型门户
1条回答
网友
1楼 · 发布于 2024-05-19 15:39:53

通过MyUser保持身份验证。做这样的事情:

class UserType(models.Model):
    type = ... # teacher, student, whatever

class MyUser(models.Model):
    name = ...
    username = ...
    user_type = models.ForeignKey('UserType',...

class TeacherProfile(models.Model):
    user = models.ForeignKey('MyUser',...
    user_type = models.ForeignKey('UserType',...
    gradebook = ...

class StudentProfile(models.Model):
    user = models.ForeignKey('MyUser',...
    user_type = models.ForeignKey('UserType',...
    homework = ...

在MyUser模型上有一个方法,比如:

^{pr2}$

所以现在如果你有一个学生用户u,你可以说

u.get_profile().homework

你可以自己添加更多的错误处理等。在

相关问题 更多 >