【问题标题】:Django Admin import_export module used for custom IMPORT用于自定义 IMPORT 的 Django Admin import_export 模块
【发布时间】:2014-05-04 12:30:37
【问题描述】:

我正在尝试关注import-export的官方文档:

https://django-import-export.readthedocs.org/en/latest/import_workflow.html#import-data-method-workflow

但我仍然不知道如何将其粘贴到我的管理员假设

  1. 我只想要字段的子集(我使用列出的字段创建了资源模型,但它在导入时崩溃了:KeyError 下面的完整堆栈。

  2. Where - in which method - 在我的管理类中(当然继承ImportExportModelAdmin 并使用定义的resource_class)我应该放置负责我想要的一些自定义操作的代码吗验证导入数据正确但将它们插入数据库之前发生。

我在 Django 方面不是很先进,希望能得到一些提示。 工作实现的例子将不胜感激,所以如果你在 github 上知道类似的东西 - 分享。

【问题讨论】:

  • 1.请发布堆栈跟踪,可能有一些错字 2​​. 在 resource_class 中,您可以覆盖一些方法(在 import_workflow 中列出)

标签: python django csv django-admin django-import-export


【解决方案1】:

你可以覆盖它

创建一个新实例

def get_instance(self, instance_loader, row):
    return False

您的自定义存档

def save_instance(self, instance, real_dry_run):
    if not real_dry_run:
            try:
                obj = YourModel.objects.get(some_val=instance.some_val)
                # extra logic if object already exist
            except NFCTag.DoesNotExist:
                # create new object
                obj = YourModel(some_val=instance.some_val)
                obj.save()

def before_import(self, dataset, dry_run):

    if dataset.headers:
        dataset.headers = [str(header).lower().strip() for header in dataset.headers]

      # if id column not in headers in your file
    if 'id' not in dataset.headers:
        dataset.headers.append('id')

【讨论】:

  • 带着一个相关的问题来到这里,但尽我所能告诉我只是将"id" 附加到headers 不会实例化一个空白列并导致import_export 创建新记录并自动增加整数 pk。附加一整列 None 值有效 (dataset.append_col([None for row in range(len(dataset))], header = 'id'),尽管这可能不是最优雅的解决方案。
猜你喜欢
  • 2015-05-18
  • 2015-09-17
  • 2012-03-05
  • 2012-03-15
  • 2018-10-11
  • 2021-07-03
  • 2011-01-11
  • 1970-01-01
  • 2017-02-12
相关资源
最近更新 更多