Добавление отчетов в администратор Django
Я хочу добавить дополнительный набор страниц к автогенерируемому сайту администратора. Я хочу создавать отчеты с моих моделей и некоторые журналы, окружающие его. Фактическая генерация не является проблемой.
Как я:
- Сделать вывод отчета похожим на страницу администратора, с панировочными сухарями, аналогично отформатированной таблицей и т.д.
- Зарегистрировать представление, чтобы оно отображалось на первой странице?
Ответы
Ответ 1
В приведенном выше ответе не был задан вопрос 2, по крайней мере, прямо... способ "взломать", чтобы ваше пользовательское представление отображалось как первая страница администратора, вероятно, просто переопределяет его в urlconf:
(r'^admin/$', my.custom.admin.homepage),
перед нормальной линией администратора:
(r'^admin/', admin.site.root),
"правильный" способ сделать это, однако, состоит в том, чтобы сделать ваш администратор настраиваемым экземпляром AdminSite и переопределить параметр index_template. http://docs.djangoproject.com/en/dev/ref/contrib/admin/#root-and-login-templates
Ответ 2
С точки зрения создания внешнего вида администратора, тривиально наследовать родительские страницы администратора и вставлять собственный контент шаблона в соответствующие блоки.
Взгляните на разметку (включая атрибуты id и class) на страницах администрирования по умолчанию и попытайтесь понять, как вещи последовательно стилизованы. Если вы включите CSS-админ на странице, вы должны получить ужасную его часть бесплатно.
Для получения дополнительной информации ознакомьтесь с документами администратора: http://docs.djangoproject.com/en/dev/ref/contrib/admin/
Ответ 3
Вот базовый шаблон для запуска:
{% extends "admin/base_site.html" %}
{% load adminmedia %}
{% block extrahead %}
{% endblock %}
{% block coltype %}flex{% endblock %}
{% block bodyclass %}change-list{% endblock %}
{% block stylesheet %}{% admin_media_prefix %}css/changelists.css{% endblock %}
{% block extrastyle %}
<link rel="stylesheet" type="text/css" href="{{settings.MEDIA_URL}}/stylesheets/extra_admin.css" />
{% endblock %}
{% block breadcrumbs %}<div class="breadcrumbs"><a href="/admin/">Home</a> › {{page_title}}</div>{% endblock %}
{% block content %}
<div id="content-main">
<h1>{{page_title}}</h1>
{{page_content}}
</div>
{% endblock %}