2012-03-22 13 views

Odpowiedz

14

można uzyskać dostęp admin.site._registry dict z model-> ModelAdmin:

>>> ./manage.py shell 

In [1]: from urls import * # load admin 

In [2]: from django.contrib import admin 

In [3]: admin.site._registry 
Out[3]: 
{django.contrib.auth.models.Group: <django.contrib.auth.admin.GroupAdmin at 0x22629d0>, 
django.contrib.auth.models.User: <django.contrib.auth.admin.UserAdmin at 0x2262a10>, 
django.contrib.sites.models.Site: <django.contrib.sites.admin.SiteAdmin at 0x2262c90>, 
testapp.models.Up: <django.contrib.admin.options.ModelAdmin at 0x2269c10>, 
nashvegas.models.Migration: <nashvegas.admin.MigrationAdmin at 0x2262ad0>} 

To właśnie widok indeksu administracja robi:

@never_cache 
def index(self, request, extra_context=None): 
    """ 
    Displays the main admin index page, which lists all of the installed 
    apps that have been registered in this site. 
    """ 
    app_dict = {} 
    user = request.user 
    for model, model_admin in self._registry.items(): 
     # ... 

Zauważ, że zmienne rozpoczynające się od znaku podkreślenia są potencjalnie ulec zmianie w przyszłych wersjach django.

+0

Czy znasz jakieś metody, aby uzyskać rzeczywistą aplikację, w której użytkownik jest administratorem? Jeśli jest to dahsboard, to nie zwraca aplikacji, ale dla innych zwraca całą etykietę lub obiekt. Chcę używać go jako templatetag w moim globalnym menu administratora. – tunarob

+0

Nie rozumiem, czy możesz otworzyć kolejne pytanie i podać więcej szczegółów? – jpic

Powiązane problemy