如何在Django 2.0.5中限制django-import-export导出格式为xls和csv
限制django-import-export导出格式为XLS和CSV(Django 2.0.5)
要在Django 2.0.5配合最新版django-import-export时,把导出格式限制为仅XLS和CSV,操作起来很直观,主要通过自定义Admin类或导出视图的格式列表实现,下面分两种常用场景说明:
场景1:在Django Admin中限制导出格式
这是最常用的场景,只需在你的ModelAdmin类里指定export_formats属性即可:
- 先导入需要的格式类:
from import_export.admin import ImportExportModelAdmin from import_export.formats import base_formats
- 定义你的ModelAdmin类,覆盖
export_formats属性:
class YourModelAdmin(ImportExportModelAdmin): # 这里放你的其他Admin配置,比如list_display、search_fields等 list_display = ('id', 'name', 'created_at') # 只保留CSV和XLS导出格式 export_formats = [ base_formats.CSV, base_formats.XLS, ]
- 最后注册你的Model和Admin:
from django.contrib import admin from .models import YourModel admin.site.register(YourModel, YourModelAdmin)
配置完成后,Admin页面的导出下拉菜单就只会显示CSV和XLS两个选项了。
场景2:自定义导出视图时限制格式
如果是自己编写导出视图而非使用Admin集成的功能,只需重写ExportView的get_export_formats方法:
- 导入必要的类:
from import_export.views import ExportView from import_export.formats import base_formats from .resources import YourModelResource
- 自定义导出视图:
class CustomExportView(ExportView): resource_class = YourModelResource def get_export_formats(self): # 仅返回允许的格式 return [ base_formats.CSV, base_formats.XLS, ]
- 在
urls.py中配置这个视图:
from django.urls import path from .views import CustomExportView urlpatterns = [ # 其他路由... path('export/', CustomExportView.as_view(), name='custom_export'), ]
注意事项
- 确保安装XLS格式依赖:XLS格式需要
xlwt库,执行pip install xlwt即可(针对Django 2.0.5,xlwt是更稳妥的选择)。 - 若你的资源类(Resource)有自定义导出逻辑,不会影响这个配置,格式限制是全局作用于导出选项的。
内容的提问来源于stack exchange,提问作者ketimaBU
相关产品推荐
相关产品推荐

