Вы можете зарегистрировать несколько ModelAdmins для модели?Альтернативы? - PullRequest
9 голосов
/ 17 января 2011

Допустим, у меня есть класс модели Django:

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

и ModelAdmins:

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 Ответ

11 голосов
/ 17 января 2011

Создайте пустой подкласс прокси и зарегистрируйте его:

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) 
...