{% extends "admin/base_site.html" %} {% load i18n %} {% block bodyclass %}grp-doc{% endblock %} {% block content-class %}{% endblock %} {% block title %}Grappelli Documentation » Change List{% endblock %} {% block extrahead %} {% endblock %} {% block breadcrumbs %}
A change-list lists objects of a model. Its basic structure and most important components are explained below. At the end of the page, you'll find a complete change-list template. Make sure to read about how a custom template is built first to gain basic understanding.
{% filter force_escape %}
{% templatetag openblock %} extends "admin/base_site.html" {% templatetag closeblock %}
{% templatetag openblock %} load i18n admin_static admin_modify grp_tags {% templatetag closeblock %}
{% templatetag openblock %} block bodyclass {% templatetag closeblock %}grp-change-list{% templatetag openblock %} endblock {% templatetag closeblock %}
{% endfilter %}
Link custom stylesheets if needed. Regarding javascripts, you should take a look at Grappellis change_list.html — mentioned below are just the parts you need for the actions.
{% filter force_escape %}
{% templatetag openblock %} block stylesheets {% templatetag closeblock %}
{% endfilter %}{{ block.super }}{% filter force_escape %}
{% endfilter %}{{ media.css }}{% filter force_escape %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} block extrastyle {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} block javascripts {% templatetag closeblock %}
{% endfilter %}{{ block.super }}{% filter force_escape %}
{% endfilter %}{{ media.js }}{% filter force_escape %}
{% templatetag openblock %} if cl.formset or action_form {% templatetag closeblock %}
{% templatetag openblock %} url 'admin:jsi18n' as jsi18nurl {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} if action_form {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} if cl.formset {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% endfilter %}
A detailed explanation on how breadcrumbs are built can be found here.
{% filter force_escape %}
{% templatetag openblock %} block breadcrumbs {% templatetag closeblock %}
{% templatetag openblock %} if not is_popup {% templatetag closeblock %}
- {% templatetag openblock %} trans "Home" {% templatetag closeblock %}
- {% templatetag openblock %} opts.app_config.verbose_name {% templatetag closeblock %}
- {% endfilter %}{{ opts.verbose_name_plural|capfirst }}{% filter force_escape %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% endfilter %}
{% filter force_escape %}
{% templatetag openblock %} block content_title {% templatetag closeblock %}
{% endfilter %}{{ cl.opts.verbose_name_plural|capfirst }}{% filter force_escape %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% endfilter %}
A detailed explanation on how object-tools are built can be found here.
{% filter force_escape %}
{% templatetag openblock %} block object-tools {% templatetag closeblock %}
{% templatetag openblock %} if has_add_permission {% templatetag closeblock %}
{% templatetag openblock %} block object-tools-items {% templatetag closeblock %}
-
{% templatetag openblock %} blocktrans with cl.opts.verbose_name as name {% templatetag closeblock %}Add {% endfilter %}{{ name }}{% filter force_escape %}{% templatetag openblock %} endblocktrans {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% endfilter %}
Within the content block, there are some components which are explained separately. Use the following links: Pagination, Search-Form, Filter, Date-Hierarchy, Tables (Result-List) and Submit-Rows.
{% filter force_escape %}
{% templatetag openblock %} block content {% templatetag closeblock %}
– Pagination, Searchfield, Filters, Date Hierarchy
– Result-List
– Pagination
– Submit-Row
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% endfilter %}
Based on Grappellis change_list.html, the content looks like this:
{% filter force_escape %}
{% templatetag openblock %} block content {% templatetag closeblock %}
{% templatetag openblock %} if cl.search_fields or cl.has_filters or cl.date_hierarchy {% templatetag closeblock %}
{% templatetag openblock %} if cl.has_filters or cl.search_fields {% templatetag closeblock %}
{% templatetag openblock %} block aside {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} block pagination_top {% templatetag closeblock %}
{% templatetag openblock %} pagination cl {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} if cl.date_hierarchy {% templatetag closeblock %}
{% templatetag openblock %} block date_hierarchy %}{% templatetag openblock %} date_hierarchy cl {% templatetag closeblock %}{% templatetag openblock %} endblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% endfilter %}
{% filter force_escape %}
{% templatetag openblock %} extends "admin/base_site.html" {% templatetag closeblock %}
{% templatetag openblock %} load i18n admin_static admin_modify grp_tags {% templatetag closeblock %}
{% templatetag openblock %} block bodyclass {% templatetag closeblock %}grp-change-list{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} block stylesheets {% templatetag closeblock %}
{% endfilter %}{{ block.super }}{% filter force_escape %}
{% endfilter %}{{ media.css }}{% filter force_escape %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} block extrastyle {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} block javascripts {% templatetag closeblock %}
{% endfilter %}{{ block.super }}{% filter force_escape %}
{% endfilter %}{{ media.js }}{% filter force_escape %}
{% templatetag openblock %} if cl.formset or action_form {% templatetag closeblock %}
{% templatetag openblock %} url 'admin:jsi18n' as jsi18nurl {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} if action_form {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} if cl.formset {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} block breadcrumbs {% templatetag closeblock %}
{% templatetag openblock %} if not is_popup {% templatetag closeblock %}
- {% templatetag openblock %} trans "Home" {% templatetag closeblock %}
- {% templatetag openblock %} opts.app_config.verbose_name {% templatetag closeblock %}
- {% endfilter %}{{ opts.verbose_name_plural|capfirst }}{% filter force_escape %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} block content_title {% templatetag closeblock %}
{% endfilter %}{{ cl.opts.verbose_name_plural|capfirst }}{% filter force_escape %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} block object-tools {% templatetag closeblock %}
{% templatetag openblock %} if has_add_permission {% templatetag closeblock %}
{% templatetag openblock %} block object-tools-items {% templatetag closeblock %}
-
{% templatetag openblock %} blocktrans with cl.opts.verbose_name as name {% templatetag closeblock %}Add {% endfilter %}{{ name }}{% filter force_escape %}{% templatetag openblock %} endblocktrans {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} block content {% templatetag closeblock %}
{% templatetag openblock %} if cl.search_fields or cl.has_filters or cl.date_hierarchy {% templatetag closeblock %}
{% templatetag openblock %} if cl.has_filters or cl.search_fields {% templatetag closeblock %}
{% templatetag openblock %} block aside {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} block pagination_top {% templatetag closeblock %}
{% templatetag openblock %} pagination cl {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} if cl.date_hierarchy {% templatetag closeblock %}
{% templatetag openblock %} block date_hierarchy %}{% templatetag openblock %} date_hierarchy cl {% templatetag closeblock %}{% templatetag openblock %} endblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} endif {% templatetag closeblock %}
{% templatetag openblock %} endblock {% templatetag closeblock %}
{% endfilter %}