2011-01-17 6 views
9

Decir que tengo la clase de Django modelo:¿Puede registrar múltiples ModelAdmins para un modelo? ¿Alternativas?

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

y los ModelAdmins:

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

class Foo_Admin_2(admin.ModelAdmin): 
list_display = ['id','baz'] 

¿hay alguna manera de registrar ambos ModelAdmins de modo que muestren en el marco de la interfaz de administración de Django?

me trataron:

admin.site.register(Foo,Foo_Admin_1) 
admin.site.register(Foo,Foo_Admin_2) 

pero me sale el error:

The model Foo is already registered 

¿Alguna sugerencia?

Si no, ¿hay formas alternativas de controlar (dinámicamente) los campos que se muestran en la vista de lista de cambios ModelAdmin?

Respuesta

11

Crear una subclase de proxy vacío y registrarlo en su lugar:

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) 
+0

Gracias, esto puede ser lo que estaba buscando, voy a dar un tiro. –

+0

Sí, pude hacer exactamente lo que necesitaba con este método, gracias de nuevo –

Cuestiones relacionadas