Как обновить модели django после импорта csv, если идентификатор уже существует с использованием django-import-export? - PullRequest
0 голосов
/ 06 апреля 2019

Я использую 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
...