【发布时间】:2015-09-20 15:20:52
【问题描述】:
在 Django 中,当我继承了模型时,如何在管理界面中进行升级/降级?
例子:
# models.py
class Person(models.Model):
name=models.CharField()
class Artist(Person):
medium=models.CharField()
classScientist(models.Model):
field=models.CharField()
# admin.py
admin.site.register(Person)
admin.site.register(Artist)
admin.site.register(Scientist)
所以在管理员中,我可以一步创建人、艺术家或科学家。
但是:
- 创建人员后,我无法将该人员提升为 WorkingPerson(这需要在 WorkingPerson 表中添加一行而不创建新人员)。
- 创建 WorkingPerson 后,我无法将该人员降级为 Person(这将只需要删除 WorkingPerson 表中的行)。
非常感谢!
奥利维尔
【问题讨论】:
-
对于你给出的例子,你真的需要继承吗?您可以创建一个与 Person 具有一对一字段的 Job 模型,然后在人们开始和完成工作时创建或删除工作对象。
-
我的例子很糟糕,模型可能是人、艺术家、科学家等。我更新问题
-
使用你的方法(我现在使用它作为一种解决方法),创建艺术家需要两个步骤:创建人,然后是艺术家。
-
使模型正确比最小化步骤数更重要。应该可以将您的子模型作为内联添加到用户模型中,或者您可以创建自己的视图。
标签: django inheritance django-models django-admin