我正在启动一个新项目,并创建了扩展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
。