【问题标题】:How to have only CSV, XLS, XLSX options in django-import-export?如何在 django-import-export 中只有 CSV、XLS、XLSX 选项?
【发布时间】:2017-08-29 03:52:22
【问题描述】:

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

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

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

【问题讨论】:

    标签: django django-import-export


    【解决方案1】:

    你可以覆盖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()]
    

    【讨论】:

    • 这很好用。谢谢!这必须在项目中每个应用程序的每个模型的每个管理类中完成。我希望有一个全局设置。
    • 你可以很容易地把它变成一个全局设置;您只需要修改主 ExportMixin 类并从设置中读取格式,或者如果没有设置,请使用默认值。
    • 您也可以使用此行为创建自己的 mixin,继承自 ExportMixin,并使用自定义的 mixin 来配置导出,而不是默认的
    【解决方案2】:

    这是旧的,但对于那些可能想知道的人......我无法在上面发表评论,因为我没有“50 声望”。为了扩展上面 Burhan Khalid 的回答,如果您想将这些格式限制(或 ExportMixin 的任何覆盖方法应用于多个管理类),您可以在管理中创建一个抽象基类,然后将该类用于您想要的类喜欢保留那些覆盖。

    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
    

    【讨论】:

      猜你喜欢
      • 2016-08-16
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2020-04-22
      • 2020-11-18
      相关资源
      最近更新 更多