vero4karu
5/19/2014 - 7:09 PM

Django: add custom button to admin change list view

Django: add custom button to admin change list view

...

<!-- OBJECT-TOOLS -->
{% block object-tools %}
    {% if has_add_permission %}
        <ul class="grp-object-tools">
            {% block object-tools-items %}
                <li><a href="{{ request.path }}download_as_xls/" class="addlink">Download as XLS</a></li>
                {% url cl.opts|admin_urlname:'add' as add_url %}
                <li><a href="{% add_preserved_filters add_url is_popup %}" class="addlink">{% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}</a></li>
            {% endblock %}
        </ul>
    {% endif %}
{% endblock %}

...
class BasicAdmin(admin.ModelAdmin):
    # ...

    def get_urls(self):
        urls = super(BasicAdmin, self).get_urls()
        my_urls = patterns(
            '',
            (r'^download_as_xls/$', self.download_as_xls_view)
        )
        return my_urls + urls

    def download_as_xls_view(self, request):
        """Generates an xls file
        """

        response = HttpResponse(mimetype='application/ms-excel')
        response['Content-Disposition'] = \
            'attachment; filename=Report.xls'
        # do something
        return response