我有一种情况,我需要为 django 1.5 项目子类化自定义用户模型(相关问题/背景:Subclassing AbstractUser in Django for two types of users)
我需要一个抽象的用户类SchoolPerson
和一些基于此的子类( , 等)Student
。Teacher
我想我已经解决了我需要将用户模型放在一个单独的数据库表中,因为其他应用程序依赖于 AUTH_USER_MODEL,其中只能有一个。
SchoolPerson
所以我看到它的方式,我必须选择这样做:在我的抽象类中添加一对一的标准用户模型:
class SchoolPerson(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
...
class Meta:
abstract = True
class Student(SchoolPerson):
year_level = models.CharField(max_length=3)
...
class Teacher(SchoolPerson):
govt_id = models.CharField(max_length=10)
...
或者我可以让我的SchoolPerson
模型继承 AbstractUser,但保持这个类是非抽象的:
class SchoolPerson(AbstractUser):
...
#no Meta abstract here
class Student(SchoolPerson):
year_level = models.CharField(max_length=3)
...
class Teacher(SchoolPerson):
govt_id = models.CharField(max_length=10)
...
其中一个比另一个有什么优势吗?