Чтобы импортировать все товары с определенной характеристикой с использованием Django import-export, вам потребуется выполнить несколько шагов.
1. Установите пакет django-import-export
, если он еще не установлен, с помощью команды pip install django-import-export
.
2. Подключите import_export
в вашем проекте, добавив 'import_export'
в список INSTALLED_APPS
в настройке settings.py
.
INSTALLED_APPS = [ ... 'import_export', ... ]
3. Создайте модель, представляющую ваш товар, например:
from django.db import models class Product(models.Model): name = models.CharField(max_length=100) characteristic = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2)
4. Создайте файл resources.py
, где вы определите ресурс для вашей модели Product
:
from import_export import resources from .models import Product class ProductResource(resources.ModelResource): class Meta: model = Product fields = ('name', 'characteristic', 'price')
5. Создайте представление или функцию для обработки импорта товаров:
from import_export.formats import base_formats from .resources import ProductResource from django.http import HttpResponse from import_export.forms import ImportForm def import_products(request): if request.method == 'POST': form = ImportForm(request.POST, request.FILES) if form.is_valid(): file = form.cleaned_data['import_file'] data = file.read() dataset = ProductResource().create_dataset(data) imported_data = ProductResource().import_data(dataset, dry_run=True, raise_errors=False, use_transactions=False, collect_failed_rows=True) if not imported_data.has_errors(): ProductResource().import_data(dataset, dry_run=False, raise_errors=True, use_transactions=False) return HttpResponse('Products imported successfully') else: errors = imported_data.row_errors() return HttpResponse(errors) else: form = ImportForm() return render(request, 'import.html', {'form': form})
6. Создайте шаблон import.html
, где вы добавите форму для загрузки файла CSV/Excel:
<form method="post" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <button type="submit">Import</button> </form>
7. Создайте URL-маршрут, который будет ссылаться на ваше представление или функцию импорта:
from django.urls import path from .views import import_products urlpatterns = [ ... path('import/', import_products, name='import'), ... ]
Теперь вы можете загрузить файл CSV/Excel с товарами с определенной характеристикой, используя форму импорта.