如何在 django-import-export 中只有 CSV、XLS、XLSX 选项?
How to have only CSV, XLS, XLSX options in django-import-export?
我已经为我的项目实现了 django-import-export。
默认情况下,它为我提供了许多导入和导出文件格式选项。
如何将文件格式限制为仅 CSV、XLS 和 XLSX?
您可以覆盖 ExportMixin
的 get_export_formats()
方法:
from import_export.formats import base_formats
class MyAdmin(ExportMixin):
# your normal stuff
def get_export_formats(self):
"""
Returns available export formats.
"""
formats = (
base_formats.CSV,
base_formats.XLS,
base_formats.XLSX,
base_formats.TSV,
base_formats.ODS,
base_formats.JSON,
base_formats.YAML,
base_formats.HTML,
)
return [f for f in formats if f().can_export()]
这是旧的,但对于那些可能想知道的人...我不能在上面发表评论,因为我没有“50 声望”。要扩展上面 Burhan Khalid 的回答,如果您想应用这些格式限制(或 ExportMixin 的任何覆盖方法到多个管理员 classes),您可以在管理员中创建一个抽象基础 class 然后将 class 用于您希望保留这些覆盖的 classes。
from import_export.formats import base_formats
# use for all admins that are admin.ModelAdmin and use ExportMixin
class ExportMixinAdmin(ExportMixin, admin.ModelAdmin):
# your normal stuff
def get_export_formats(self):
formats = (
base_formats.CSV,
base_formats.XLS,
base_formats.XLSX,
)
return [f for f in formats if f().can_export()]
class Meta:
abstract = True
class ModelOneAdmin(ExportMixinAdmin):
# your normal stuff here
class ModelTwoAdmin(ExportMixinAdmin):
# your normal stuff here
我已经为我的项目实现了 django-import-export。
默认情况下,它为我提供了许多导入和导出文件格式选项。
如何将文件格式限制为仅 CSV、XLS 和 XLSX?
您可以覆盖 ExportMixin
的 get_export_formats()
方法:
from import_export.formats import base_formats
class MyAdmin(ExportMixin):
# your normal stuff
def get_export_formats(self):
"""
Returns available export formats.
"""
formats = (
base_formats.CSV,
base_formats.XLS,
base_formats.XLSX,
base_formats.TSV,
base_formats.ODS,
base_formats.JSON,
base_formats.YAML,
base_formats.HTML,
)
return [f for f in formats if f().can_export()]
这是旧的,但对于那些可能想知道的人...我不能在上面发表评论,因为我没有“50 声望”。要扩展上面 Burhan Khalid 的回答,如果您想应用这些格式限制(或 ExportMixin 的任何覆盖方法到多个管理员 classes),您可以在管理员中创建一个抽象基础 class 然后将 class 用于您希望保留这些覆盖的 classes。
from import_export.formats import base_formats
# use for all admins that are admin.ModelAdmin and use ExportMixin
class ExportMixinAdmin(ExportMixin, admin.ModelAdmin):
# your normal stuff
def get_export_formats(self):
formats = (
base_formats.CSV,
base_formats.XLS,
base_formats.XLSX,
)
return [f for f in formats if f().can_export()]
class Meta:
abstract = True
class ModelOneAdmin(ExportMixinAdmin):
# your normal stuff here
class ModelTwoAdmin(ExportMixinAdmin):
# your normal stuff here