你可以为一个模型注册多个 ModelAdmins 吗?备择方案?
Posted
技术标签:
【中文标题】你可以为一个模型注册多个 ModelAdmins 吗?备择方案?【英文标题】:Can you register multiple ModelAdmins for a Model? Alternatives? 【发布时间】:2011-06-10 15:41:36 【问题描述】:假设我有 Django 模型类:
class Foo(models.Model):
bar = models.CharField()
baz = models.CharField()
和模型管理员:
class Foo_Admin_1(admin.ModelAdmin):
list_display = ['id','bar']
class Foo_Admin_2(admin.ModelAdmin):
list_display = ['id','baz']
有什么方法可以注册两个 ModelAdmin 以便它们显示在 Django Admin 界面下?
我试过了:
admin.site.register(Foo,Foo_Admin_1)
admin.site.register(Foo,Foo_Admin_2)
但我得到了错误:
The model Foo is already registered
有什么建议吗?
如果没有,是否有其他方法可以(动态)控制 ModelAdmin 更改列表视图中显示的字段?
【问题讨论】:
【参考方案1】:创建一个空的代理子类并注册它:
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)
【讨论】:
谢谢,这可能就是我要找的东西,我试试看。 是的,我能够使用这种方法完成我需要的工作,再次感谢以上是关于你可以为一个模型注册多个 ModelAdmins 吗?备择方案?的主要内容,如果未能解决你的问题,请参考以下文章