2011-02-06 4 views
2

J'utilise Django pour un projet et je souhaite utiliser quelques applications qui étendent l'admin en sous-classant la classe admin.Héritage multiple avec Django

Comment les avoir tous les deux sous-classe la classe d'administration?

from django.contrib import admin 
from testing.models import * 
from reversion.admin import VersionAdmin 
from moderation.admin import ModerationAdmin 

class ItemAdmin(VersionAdmin): 
    pass 

admin.site.register(Item, ItemAdmin) 
+0

Vous ne pouvez pas sous-classer un module. Le sous-classement est ... erm ... pour les cours. Est 'la classe ItemAdmin (VersionAdmin, ModerationAdmin)' ce que vous voulez? (J'en doute.) Si oui, pourquoi ça ne marche pas? – Thomas

Répondre

4

VersionAdmin et ModerationAdmin semblent tous les deux utiliser la fonctionnalité «super coopératif» de Python. Donc, je vais essayer d'utiliser simplement l'héritage multiple:

class ItemAdmin(VersionAdmin, ModerationAdmin): 
    pass 

Si cela échoue, vous pouvez voir si cela fonctionne mieux avec l'ordre inverse. Si cela échoue encore, vous devez étudier le problème spécifique et découvrir pourquoi le super coopératif ne fonctionne pas.