Django Admin 修改模型继承

Django Admin modifying model inheritance

大家好!

我有一个结构类似这样的模型

class BaseUser(models.Model):
    user_data = models.ForeignKey(settings.AUTH_USER_MODEL) #External Auth User Model

class Teacher(BaseUser):
    pass

class Student(BaseUser):
    pass

我正在将所有模型添加到 Django 管理中。

for model in get_models(get_app('MyApp')):
    admin.site.register(model)

在管理面板中,我可以 create/view BaseUserTeacherStudent 的列表。其中 Teacher/StudentBaseUser.

的子集

问题

创建新用户时,它会自动成为 BaseUser。 有没有办法在管理面板中将用户的 class 从 BaseUser 更改为 TeacherStudent

不,没有在管理员中执行此操作的内置方法。您要么必须自己编写代码,要么如果您想创建 Teacher 从它的管理员创建视图中进行。

不仅是模型的python class,还有数据库的表示。对于每个使用具体继承的模型,都会创建特殊的 table 来保存模型 subclass 的附加字段,并自动为父对象创建 OneToOneFieldDetails here.

编辑: 尝试指定 parent link field ,这可能可以从管理员管理,因此它将允许您创建例如新 Teacher link 已存在 BaseUser.

编辑: 指定父项 link 也无济于事,因为该字段不会出现在管理中。