gpt4 book ai didi

django - 为django 1.5选择正确的用户继承方式

转载 作者:行者123 更新时间:2023-12-02 05:00:25 25 4
gpt4 key购买 nike

我有一种情况需要为 django 1.5 项目子类化自定义用户模型(相关问题/背景:Subclassing AbstractUser in Django for two types of users)

我需要一个抽象用户类 SchoolPerson 和一些基于此的子类(StudentTeacher 等)。我想我已经解决了,我需要将用户模型放在子类的单独数据库表中,因为其他应用程序依赖于 AUTH_USER_MODEL,而 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)
...

其中一个比另一个有什么优势吗?

最佳答案

我还没有对此进行测试,但我希望您的第一个建议是创建两个数据库表:一个给学生,一个给老师,每个都有一个指向 AUTH_USER_MODEL 的外键。

对于第二个,我希望 Django 创建三个数据库表:一个用于 SchoolPerson(这将与带有附加字段的默认用户表完全相同),两个用于具有 SchoolPerson 外键的学生和教师。

所以我认为答案取决于您的要求。

关于django - 为django 1.5选择正确的用户继承方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16824960/

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