django-import-export to export User model

筅森魡賤 提交于 2019-12-07 14:41:17

问题


I'm using the django-import-export library with success to provide a data download option via the django admin for some of my defined models.

I'm having difficulty however providing the same export option via the User Admin.

For my other models I've done something like the following to my admin.py:

class OtherResource(resources.ModelResource):
    class Meta:
        model = Other

class OtherAdmin(ExportMixin, admin.ModelAdmin):
    # Other admin definition here

My problem is providing the same Export functionality to pre-packaged Django models like User.

I tried the following...

class UserResource(resources.ModelResource):
    class Meta:
        model = User

class UserAdmin(ExportMixin, UserAdmin):
    pass

But this has a couple problems,

  1. It drops a bunch of the User model fields from the list display (like is_active and groups)
  2. I can see that something is not fully connected because adding exclude's to the UserResource is not excluding those fields from the export

I could re-create the UserAdmin on my end, but I'm hoping (and guessing) that's unnecessary.

Any ideas?


回答1:


So I was making a couple of mistakes.

  1. I was being an idiot (I was importing the django UserAdmin rather than the UserAdmin I had created as an override a couple years ago in a dependency to this project -- this explains why fields were dropped when overriding the UserAdmin)
  2. I was failing to manually link the OtherResource to the OtherAdmin as explained in the django-import-export docs

The solution to both of the above code samples is as follows:

For the Other model

class OtherResource(resources.ModelResource):
    class Meta:
        model = Other

class OtherAdmin(ExportMixin, admin.ModelAdmin):
    resource_class = OtherResource
    # Other admin definition here

and for the User model

class UserResource(resources.ModelResource):
    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email')

class UserAdmin(ExportMixin, UserAdmin):
    resource_class = UserResource
    pass

admin.site.unregister(User)
admin.site.register(User, UserAdmin)

Viola.
Everything works as intended.
Other model is exported in full.
User model is exported as 3 columns (first name, last name, and email).




回答2:


Imports required

from import_export import resources
from import_export.admin import ExportMixin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin


来源:https://stackoverflow.com/questions/28886074/django-import-export-to-export-user-model

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!