如何在Django Admin中拥有两个相同模型的ModelAdmin

时间:2013-05-10 06:02:34

标签: python django

我在管理网站上注册了这样的模型管理员

site.register(Student, ModelAdmin)

现在我还有一个管理员,它继承自模型管理员,带有一些像这样的自定义数据

class StudentAdmin(ModelAdmin):
    list_display = ('id', 'user', 'created')
    search_fields = ('username',)

我也希望像这样注册

site.register(Student, StudentAdmin)

但是我得到Student已经注册的错误

3 个答案:

答案 0 :(得分:3)

也许你可以使用proxy models 像..

class MyStudent(Student):
    class Meta:
        proxy=True

class MyStudentAdmin(ModelAdmin):
    list_display = ('id', 'user', 'created')
    search_fields = ('username',)

site.register(Student, ModelAdmin)
site.register(MyStudent, MyStudentAdmin)

答案 1 :(得分:0)

首先,您必须取消注册您的注册声明

site.register(Student, ModelAdmin)

site.unregister(Student, ModelAdmin)

然后注册第二个

site.register(Student,StudentAdmin)

您不能同时使用两者。 (1 Model - 1 AdminModel)

答案 2 :(得分:-2)

不,您不能为单个ModelAdmin注册多个Model(子)类。

如果您尝试此操作,

django.contrib.auth将引发错误。