Search code examples
djangoimportcsv-import

How to define the admin import format for a field using django-import-export


I am trying to use the recently open-sourced django-import-export to import some data via the admin, and I needed to choose a custom date format.

It works, but are there problems/better ways of doing it?

admin.py:

from import_export.admin import ImportExportMixin, ImportExportModelAdmin
from import_export import resources

from .models import Enrolment

class EnrolmentResource(resources.ModelResource):

    class Meta:
        model = Enrolment
        fields = ('id','source','firstname','surname','date_of_birth',
                  'bonus','status','tracking_comments')

        widgets = {
                'date_of_birth': {'format': '%d/%m/%Y'},
                }

class EnrolmentAdmin(ImportExportMixin, admin.ModelAdmin):

    def get_resource_class(self):
        if not self.resource_class:
            return EnrolmentResource
        else:
            return self.resource_class

admin.site.register(Enrolment, EnrolmentAdmin)

Solution

  • Following to this code example, you should do something like this:

    # ...
    class EnrolmentResource(resources.ModelResource):
    # ...
    class EnrolmentAdmin(ImportExportMixin, admin.ModelAdmin):
        resource_class = EnrolmentResource
    # ...
    admin.site.register(Enrolment, EnrolmentAdmin)