Usage¶
The API of the Exporter class is subject to change and therefore not yet documented.
Admin actions¶
The library provides admin action factories for csv and xlsx formats.
from django.contrib import admin
from django_dataexporter.admin import export_csv_action_factory, export_excel_action_factory
from .models import User
class UserAdmin(admin.ModelAdmin):
export_fields = ('id', 'first_name', 'last_name')
actions = [
export_csv_action_factory(fields=export_fields, header=True, label='Export as CSV'),
export_excel_action_factory(fields=export_fields, header=True, label='Export as XLSX'),
]
The dataexporter classes can be also used inside an admin function. It is especially handy when defining a custom dataexporter class.
from django.contrib import admin
from django_dataexporter.csv import CsvExporter
from django_dataexporter.excel import ExcelExporter
from .models import User
class CustomExporter(CsvExporter):
export_name = 'Custom'
fields = ['first_name', 'last_name']
field_header_verbose_names = {'last_name': 'Surname'}
filename_extension = 'txt'
def get_data_value(self, record, field):
record = super().get_data_value(record, field)
return record or 'Sorry, no data here.'
class UserAdmin(admin.ModelAdmin):
export_fields = ('id', 'first_name', 'last_name')
actions = ['csv_export', 'excel_export', 'custom_export']
def csv_export(self, request, queryset):
exporter = CsvExporter(fields=self.export_fields, header=True)
return exporter.get_http_response(request, queryset)
csv_export.short_description = 'Export surveys as CSV'
def excel_export(self, request, queryset):
exporter = ExcelExporter(fields=self.export_fields, header=True)
return exporter.get_http_response(request, queryset)
excel_export.short_description = 'Export surveys as XLSX'
def custom_export(self, request, queryset):
exporter = CustomExporter()
return exporter.get_http_response(request, queryset)
custom_export.short_description = 'Export name and surname only'