2016-03-30 4 views
0

Что я пытаюсь архивировать, есть динамическая информация о моделях, например счет, на странице просмотра admin по умолчанию, где перечислены все зарегистрированные модели.Динамические значения имени Django в обзоре модели на сайте администратора

Я делаю это сейчас крайне хак образом, как:

class x(object): 
    def __unicode__(self, *args, **kwargs): 
     return u"Items (%i items)" % SteamItem.objects.count() 
class Item(models.Model) 
    ... 
    class Meta: 
     verbose_name_plural = x() 

Есть ли способ сделать то же самое в более удобном пути без необходимости редактирования шаблона администратора?
Если редактирование шаблона администратора является единственным способом, я бы оценил некоторые подсказки, с которых начать мой поиск.

ответ

1

Интроспекция django admin code Я узнал, что, к сожалению, класс модели не передается в контекст шаблона - поэтому вы не можете легко запросить счет объекта. Что передается в шаблон для каждой модели:

model_dict = { 
    'name': capfirst(model._meta.verbose_name_plural), 
    'object_name': model._meta.object_name, 
    'perms': perms, 
} 

Что вы можете сделать, это переопределить AdminSite._build_app_dict включить сам класс модели, переопределить шаблон индекса по умолчанию и просто запрос в шаблоне с помощью:

{{ model_class.objects.count }} 

Шаблон по умолчанию - admin/index.html, но может быть настроен на основе каждого администратора, как вы можете видеть в вышеупомянутом классе.

Смежные вопросы