python - 您可以为一个模型注册多个模型管理员吗?备择方案?

标签 python django django-models django-admin

假设我有 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.site.register(Foo,Foo_Admin_1)
admin.site.register(Foo,Foo_Admin_2)

但是我得到了错误:

The model Foo is already registered

有什么建议吗?

如果没有,是否有替代方法(动态地)控制 ModelAdmin 更改 ListView 中显示的字段?

最佳答案

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

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) 

关于python - 您可以为一个模型注册多个模型管理员吗?备择方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716880/

相关文章:

在heroku上使用whitenoise的Django静态文件

django - Wagtail API - 在 json 输出上显示图像 URL

python - 在派生自 Django 模型的类上使用 __new__ 不起作用

python - Django:在基于类的 View 中访问变量

python - 使用 scrapy 进行抓取

Python Pandas,运行总和,基于前一行值并分组

python - model.save 上的 Django Filefield UnicodeDecodeError

python - 调整 3D 图像的大小(和重新采样)

python - 我如何通过 django session 中存储的属性来限制 django 外键选择

python - 在 Django 模型中制作树结构?