首页 > 解决方案 > 如果使用 django-import-export 已经存在 id,如何在导入 csv 后更新 django 模型?

问题描述

我正在使用django-import-export模块在我的应用程序中导入 csv。但是我想要的是,如果我再次上传相同的 csv 并更改了一些值,它会更新模型中的现有值,而不是在新行中添加相同的值。这是我的代码:

#resources.py:

class ProductResource(resources.ModelResource):
    class Meta:
        model = Product
        import_id_fields = ('p_id',)
        skip_unchanged = True
        report_skipped = False
#views.py:

    if request.method == 'POST' and request.FILES['myfile']:
        product_resource = ProductResource()
        dataset = Dataset()
        new_product = request.FILES['myfile']

        imported_data = dataset.load(new_product.read().decode('utf-8'),format='csv')
        result = product_resource.import_data(dataset, dry_run = True)

        if not result.has_errors():
            product_resource.import_data(dataset, dry_run=False)
#models.py:

class Product(models.Model):
    p_id = models.CharField(max_length=20)
    name = models.CharField(max_length=20)
    quantity = models.IntegerField()
    prop1 = models.CharField(max_length=30)
    prop2 = models.CharField(max_length=30)

    def __str__(self):
        return self.p_id

标签: djangocsvdjango-import-export

解决方案


您可以使用exclude=('id')然后从文件中删除 id。


推荐阅读