Как можно применить фильтрацию к импортированным данным при использовании пакета 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'),
]

Вернуться на верх