Django - 创建一个新的用户模型扩展一个已经扩展的用户模型
Django - Creating a new user model extending an already extended user model
我正在开始一个新项目,我创建了扩展 AbstractBaseUser
的用户模型,如下所示:
class NewUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField( unique=True)
user_name = models.CharField(max_length=150, unique=True)
...
我想知道创建我的用户(例如教师)是否可能并且是否有意义
通过扩展 NewUser
,并添加所有教师个人资料信息。
那将是这样的:
class Teacher(NewUser):
role = models.CharField(max_length=150)
title = models.CharField(max_length=150)
date_of_birth = models.CharField(max_length=150)
...
这是一个好的做法吗?它是否允许我将内置身份验证方法与 DRS 一起使用?
如果我想让其他用户(例如学生)也能注册一个帐户并登录,这是否会提供更大的灵活性?
还是直接使用 NewUser
更有意义?
非常感谢一些建议/见解!
我建议这样使用 OneToOneField
:
class Teacher(models.Model):
user = models.OneToOneField(NewUser, related_name='teacher')
# Other fields that related to Teacher
class Student(models.Model):
user = models.OneToOneField(NewUser, related_name='student')
# Other fields that related to Student
因此,NewUser
模型将仅负责 login
、signup
和 permissions
。
我正在开始一个新项目,我创建了扩展 AbstractBaseUser
的用户模型,如下所示:
class NewUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField( unique=True)
user_name = models.CharField(max_length=150, unique=True)
...
我想知道创建我的用户(例如教师)是否可能并且是否有意义
通过扩展 NewUser
,并添加所有教师个人资料信息。
那将是这样的:
class Teacher(NewUser):
role = models.CharField(max_length=150)
title = models.CharField(max_length=150)
date_of_birth = models.CharField(max_length=150)
...
这是一个好的做法吗?它是否允许我将内置身份验证方法与 DRS 一起使用?
如果我想让其他用户(例如学生)也能注册一个帐户并登录,这是否会提供更大的灵活性?
还是直接使用 NewUser
更有意义?
非常感谢一些建议/见解!
我建议这样使用 OneToOneField
:
class Teacher(models.Model):
user = models.OneToOneField(NewUser, related_name='teacher')
# Other fields that related to Teacher
class Student(models.Model):
user = models.OneToOneField(NewUser, related_name='student')
# Other fields that related to Student
因此,NewUser
模型将仅负责 login
、signup
和 permissions
。