2014-03-26 64 views
2

我試圖遵循import-export官方文檔Django管理import_export模塊:用於自定義導入

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

但我仍然不知道如何將它粘到我的管理假設

  1. 我只想要字段的子集(我創建了帶有列表字段的資源模型,但它在導入時崩潰了:KeyError full stack bellow。

  2. 凡 - 在該方法 - 我應該在我的管理類(繼承當然ImportExportModelAdmin和使用規定resource_class)將負責我想以後確認發生一些自定義操作代碼,即進口數據正確但之前將它們插入到數據庫中。

我不是很高級的Django,並會感謝一些提示。 工作實現的例子將不勝感激,所以如果你在github上知道類似的東西 - 分享。

+0

1.請張貼堆棧跟蹤,有可能是一些錯字 2. resource_class你可以重載一些方法(在import_workflow中列出) – bmihelac

回答

0

你可以重寫它作爲

創建一個新的實例

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') 
+0

到達這裏有一個相關的問題,但最好我可以告訴只需追加''「id」' ''headers''不會實例化一個空白列並導致''import_export''創建新記錄並自動遞增整數pk。附加完整的「None」值列(''dataset.append_col([無用於範圍內的行(len(dataset))],header ='id'''),儘管這可能不是最優雅的解。 – shiftedPriors