代码之家  ›  专栏  ›  技术社区  ›  juju

无法在django导入导出中使用before_import override函数插入头

  •  0
  • juju  · 技术社区  · 6 年前

    我在用 django-import-export 通过django admin上传csv文件。我有能力超越 before_import 函数在导入之前添加功能。我有一个没有标题的csv文件,实际数据从第一行开始。我需要添加一个标题,或者在上传csv文件之前插入一行,以便正确读取。

    class UpdateResource(resources.ModelResource):
        def before_import(self, dataset, using_transactions, dry_run, **kwargs):
            dataset.header = ['sku', 'quantity']
    
        class Meta:
            model = Upload
            import_id_fields = ('sku',)
    

    此代码将csv文件第一行的值更改为 sku,quantity ,但我需要在该值之上插入一个,而不是替换它。或者,如果有一个选项可以忽略头并将值从左到右映射到我的模型或其他东西,那也很好。

    0 回复  |  直到 6 年前
        1
  •  2
  •   juju    6 年前

    我的修复方法是将第一行存储为变量,创建所需的头并将第一行追加到文件末尾。

    class UpdateResource(resources.ModelResource):
        def before_import(self, dataset, using_transactions, dry_run, **kwargs):
            first_row = dataset.header
            dataset.header = ['sku', 'quantity']
            dataset.append(first_row)
    
    推荐文章