Как можно применить фильтрацию к импортированным данным при использовании пакета django-import-export
Применяя форму (не используя панель администратора) можно сделать так, чтобы пользователи импортировали свои данные в формате xlsx практически в модели. У меня есть две модели Task & Item. Каждый объект Task имеет множество объектов Item. Когда необходимо импортировать файл данных, содержащий смешанные данные, а именно несколько задач, созданных разными пользователями со своими элементами, утилита Django-import-export импортирует их все. Но в некоторых случаях требуется ограничить процесс импорта, разрешив только те задачи, которые созданы самим пользователем, а не все задачи целиком. Могу ли я решить эту проблему, применив фильтр к данным?
def importData(request,pk):
if request.method == 'POST':
#query = Item.objects.filter(task_id = pk)
item_resource = ItemResource()
dataset = Dataset()
new_items = request.FILES['importData']
imported_data = dataset.load(new_items.read(), format='xlsx')
result = item_resource.import_data(dataset, dry_run=True)
if not result.has_errors():
item_resource.import_data(dataset, dry_run=False)
converted = str(pk)
return HttpResponseRedirect('http://127.0.0.1:8000/'+'checklist/task/'+ converted + '/')
else:
return HttpResponse('Your Data is not Proper ! Please Try Again...')
return render(request, 'checklist/import.html')enter code here
class Task(models.Model):
user = models.ForeignKey(User, verbose_name="Kullanıcı", on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(verbose_name="Kontrol Listesi Başlığı", max_length=200)
description = models.TextField(verbose_name="Açıklama", null=True, blank=True)
complete = models.BooleanField(verbose_name="Tamamlandı mı?", default=False)
created = models.DateTimeField(auto_now_add=True, verbose_name='Kayıt Tarihi')
update_date = models.DateTimeField(auto_now=True, verbose_name='Son Güncelleme')
class Item(models.Model):
task = models.ForeignKey(Task, verbose_name="Kontrol Listesi", on_delete=models.CASCADE)
measure = models.CharField(verbose_name="Kontrol Faaliyeti (Önlem)", max_length=250)
status = models.CharField(verbose_name='Uygun mu?', default='Y', max_length=20, choices = STATUS_CHOICES)
note = models.CharField(verbose_name='Notlar', max_length=150, null=True, blank=True)
urlpatterns = [
path('checklist/export/task/<int:pk>/',exportData, name='export-data'),
path('checklist/import/task/<int:pk>/',importData, name='import-data'),
]