Django admin-Как получить все зарегистрированные модели в templatetag?
Я пишу пользовательский админ материал и должен получить все зарегистрированные модели в Admin. Возможно ли это? Мне это нужно, чтобы сделать некоторые пользовательские представления на странице индекса администратора.
1 ответ:
Вы можете получить доступ к
admin.site._registry
дикт 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>}
Вот что делает представление индекса администратора:
Обратите внимание, что переменные с префиксом подчеркивания потенциально подвержены изменениям в будущих версиях django.@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(): # ...