2012-03-22 9 views

Respuesta

14

Puede acceder admin.site._registry dict de Modelo-> 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>} 

Esto es lo que la vista del índice administrador hace:

@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(): 
     # ... 

Tenga en cuenta que las variables prefijadas con un guión son potencialmente sujetos a cambios en versiones futuras de django.

+0

¿Sabes si hay algún método para obtener la aplicación real en la que el usuario está en administración? Si es dahsboard, no devuelve ninguna aplicación, pero para otros devuelve todas las etiquetas u objetos. Quiero usarlo como templatetag en mi menú global de administración. – tunarob

+0

No entiendo, ¿puedes abrir otra pregunta y dar más detalles? – jpic

Cuestiones relacionadas