Django Admin修改模型继承

时间:2015-08-31 19:39:06

标签: python django inheritance django-admin

大家好!

我有一个类似这样的模型

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)

在管理面板中,我可以创建/查看BaseUserTeacherStudent的列表。 Teacher / StudentBaseUser的子集。

问题

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

1 个答案:

答案 0 :(得分:2)

在管理员中没有内置的方法。您必须自己编写代码,或者如果要创建Teacher,请从其管理创建视图中进行编写。

不仅是关于python类的模型,还有数据库表示。对于使用具体继承的每个模型,将创建特殊表,其中包含模型子类的其他字段,并自动创建OneToOneField到父级。 Details here

编辑: 尝试指定可由管理员管理的parent link field,因此它允许您创建例如与现有Teacher相关联的新BaseUser

编辑: 指定父链接也无济于事,因为该字段不会出现在admin。