2011-01-17 2 views
9

sagen, dass ich die Django-Modell-Klasse haben:Können Sie mehrere ModelAdmins für ein Modell registrieren? Alternativen?

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

und die ModelAdmins:

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

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

ist es eine Möglichkeit, beide ModelAdmins zu registrieren, so dass sie unter dem Django-Admin-Oberfläche angezeigt?

Ich habe versucht:

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

aber ich habe den Fehler:

The model Foo is already registered 

Irgendwelche Vorschläge?

Falls nicht, gibt es alternative Möglichkeiten, die in der ModelAdmin-Änderungslistenansicht angezeigten Felder (dynamisch) zu steuern?

Antwort

11

eine leere Proxy-Unterklasse es erstellen und registrieren statt:

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

Danke, kann das sein, was ich suchte, ich werde es versuchen. –

+0

Ja, mit dieser Methode konnte ich genau das machen, was ich brauchte, nochmals danke –

Verwandte Themen