I'm trying to customize the export_as_csv
action that appears in the admin menu, so that I can add dynamic fields to the exported CSV file. This is through the use of django-adminactions which provides the Export as CSV action. So far I have the following:
from django.contrib import admin
from adminactions.api import csv_options_default, export_as_csv as _export_as_csv
from myapp.models import MyModel
class MyModelAdmin(admin.ModelAdmin):
list_display = ('field1', 'field2', 'field3')
qs = MyModel.objects.all()
options = csv_options_default
fields = ['field4', 'field5']
header = ['Header4', 'Header5']
actions = [_export_as_csv(queryset=qs, fields=fields, header=header, options=options)]
admin.site.register(MyModel, MyModelAdmin)
But the above generates an error on the page as follows:
hasattr(): attribute name must be string
Request Method: GET
Request URL: http://localhost:8000/admin/mymodel/mymodel/
Django Version: 1.4.14
Exception Type: TypeError
Exception Value:
hasattr(): attribute name must be string
Exception Location: /home/me/.virtualenvs/myproj/local/lib/python2.7/site-packages/django/contrib/admin/options.py in get_action, line 648
Python Executable: /home/me/.virtualenvs/myproj/bin/python
Python Version: 2.7.6
I'm I doing this the right way? How would one go about adding dynamic fields to Django's export_as_csv
function in the admin?
I made this a while back:
https://djangosnippets.org/snippets/2995/
It can be used like so: