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 BaseUser
、Teacher
和 Student
的列表。其中 Teacher
/Student
是 BaseUser
.
的子集
问题
创建新用户时,它会自动成为 BaseUser
。
有没有办法在管理面板中将用户的 class 从 BaseUser
更改为 Teacher
或 Student
?
不,没有在管理员中执行此操作的内置方法。您要么必须自己编写代码,要么如果您想创建 Teacher
从它的管理员创建视图中进行。
不仅是模型的python class,还有数据库的表示。对于每个使用具体继承的模型,都会创建特殊的 table 来保存模型 subclass 的附加字段,并自动为父对象创建 OneToOneField
。 Details here.
编辑:
尝试指定 parent link field ,这可能可以从管理员管理,因此它将允许您创建例如新 Teacher
link 已存在 BaseUser
.
编辑:
指定父项 link 也无济于事,因为该字段不会出现在管理中。
大家好!
我有一个结构类似这样的模型
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 BaseUser
、Teacher
和 Student
的列表。其中 Teacher
/Student
是 BaseUser
.
问题
创建新用户时,它会自动成为 BaseUser
。
有没有办法在管理面板中将用户的 class 从 BaseUser
更改为 Teacher
或 Student
?
不,没有在管理员中执行此操作的内置方法。您要么必须自己编写代码,要么如果您想创建 Teacher
从它的管理员创建视图中进行。
不仅是模型的python class,还有数据库的表示。对于每个使用具体继承的模型,都会创建特殊的 table 来保存模型 subclass 的附加字段,并自动为父对象创建 OneToOneField
。 Details here.
编辑:
尝试指定 parent link field ,这可能可以从管理员管理,因此它将允许您创建例如新 Teacher
link 已存在 BaseUser
.
编辑: 指定父项 link 也无济于事,因为该字段不会出现在管理中。