Django application that lets you create reports

django, autoreports, reports, csv, xls, excel, wizard, filters, change, list
pip install django-autoreports==0.8.6



Autoreports is a Django application that lets you create reports in very Django Admin listing


In your




In your

urlpatterns = patterns('',


    (r'^autoreports/', include('autoreports.urls')),


Media files

Link the media files in your project media directory

cd {{ MEDIA_ROOT }}
ln -s {{ AUTOREPORTS_FORM_PATH }}media/ autoreports

In the admin site (from Advanced usage)

Redefine 'admin/change_list.html' templates as follows

{% load adminmedia admin_list i18n autoreports_tags %} {# add auto_reports_tags #}


{% block object-tools %}
  {% if has_add_permission %}
    <ul class="object-tools">
        <a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">
          {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
      {% autoreports_admin %} {# add this stuff #}
  {% endif %}
{% endblock %}


By default it will takes 'list_display' fields to export in CSV. You can redefine it in every model admin you want:

from autoreports.admin import ReportAdmin


class FooModelAdmin(ReportAdmin, admin.ModelAdmin):

Basic usage

You have to api, and you can export to CSV each models.


Advanced usage

You have for each change list 4 new actions:

Quick report

Report to csv the same that you see in the changelist. Works the filters and the searcher

Advanced report

You have a form to filter. You can customizer this form.

class FooModelAdmin(ReportAdmin, admin.ModelAdmin):
   report_filter_fields = ('description', 'category', ...)
   report_display_fields = ('name', 'description',  ...)

If you don't define this attributes, report_filter_fields and report_display_fields have the value of list_display

Wizard report

You can create a new "Advanced reports", with this wizard


A list of "Advanced reports" thet you created with the wizard

You can have this functionality in the public view, if you registry some Model: To access /autoreports/.

from autoreports.registry import report_registry
from autoreports.api import ReportApi


class ModelApi(ReportApi):
   category = 'contrato'
   category_verbosename = 'Contrato'

report_registry.register_api(Model, ModelApi)


You can set some settings and autoreports adapt itself:

  • AUTOREPORTS_BASE_TEMPLATE = 'base.html' # Indicate of the base template
  • AUTOREPORTS_FUNCTIONS = True # If you want that the funcions can choose in the wizard
  • AUTOREPORTS_INITIAL = True # If you want that the advanced forms have to default the initial values
  • AUTOREPORTS_I18N = False # If you want have the forms (that you created with the wizard) in various languages
  • AUTOREPORTS_SUBFIX = True # If you want that in the filter set the filter brackets
  • AUTOREPORTS_ADAPTOR = {'datetime': 'myappreport.fields.DateTimeFieldReportField'} # If you want change some adaptor
  • AUTOREPORTS_WIZARDFIELD = 'myappreport.wizards.MyWizardField' # If you want change the WizardField
  • AUTOREPORTS_USE_CMSUTILS = True # If autoreports should use cmsutils package


You can get the last bleeding edge version of autoreports by doing a clone of its git repository:

git clone