你能为一个模型注册多个ModelAdmins吗?备择方案?

Tom*_*and 9 python django django-models django-admin

假设我有Django模型类:

class Foo(models.Model):
 bar = models.CharField()
 baz = models.CharField()
Run Code Online (Sandbox Code Playgroud)

和ModelAdmins:

class Foo_Admin_1(admin.ModelAdmin):
 list_display = ['id','bar']

class Foo_Admin_2(admin.ModelAdmin):
 list_display = ['id','baz']
Run Code Online (Sandbox Code Playgroud)

有没有办法注册两个ModelAdmins,以便它们出现在Django Admin界面下?

我试过了:

admin.site.register(Foo,Foo_Admin_1)
admin.site.register(Foo,Foo_Admin_2)
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

The model Foo is already registered
Run Code Online (Sandbox Code Playgroud)

有什么建议?

如果没有,是否有其他方法(动态)控制ModelAdmin更改列表视图中显示的字段?

Mik*_*bov 11

创建一个空的代理子类并注册它:

class Foo(models.Model):
    bar = models.CharField()
    baz = models.CharField()

# admin.py
class FooProxy(Foo):
    class Meta:
        proxy=True

admin.site.register(Foo, FooAdmin1)
admin.site.register(FooProxy, FooAdmin2) 
Run Code Online (Sandbox Code Playgroud)