如何在 django-import-export 中只有 CSV、XLS、XLSX 选项?

How to have only CSV, XLS, XLSX options in django-import-export?

我已经为我的项目实现了 django-import-export

默认情况下,它为我提供了许多导入和导出文件格式选项。

如何将文件格式限制为仅 CSV、XLS 和 XLSX?

您可以覆盖 ExportMixinget_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