你可以为一个模型注册多个 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 吗?备择方案?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建具有选择的多个用户模型?

你可以在 Spring Boot 中为多个模型设置一个控制器吗?

我们可以在一个视图中使用不同模型的多个局部视图吗?

剃刀视图 MVC 中的多个模型

如何免费搭建一个网站?

NodeJS + Mongoose:MissingSchemaError:模式尚未注册模型“类别”