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