diff --git a/import_export_celery/admin_actions.py b/import_export_celery/admin_actions.py index 2c06434..892f119 100644 --- a/import_export_celery/admin_actions.py +++ b/import_export_celery/admin_actions.py @@ -40,15 +40,14 @@ def run_export_job_action(modeladmin, request, queryset): def create_export_job_action(modeladmin, request, queryset): - if queryset: - arbitrary_obj = queryset.first() + if queryset is not None: ej = ExportJob.objects.create( - app_label=arbitrary_obj._meta.app_label, - model=arbitrary_obj._meta.model_name, + app_label=queryset.model._meta._meta.app_label, + model=queryset.model._meta._meta.model_name, queryset=json.dumps( [ - str(obj.pk) if isinstance(obj.pk, UUID) else obj.pk - for obj in queryset + str(pk) if isinstance(pk, UUID) else pk + for pk in queryset.values_list("pk", flat=True) ] ), site_of_origin=request.scheme + "://" + request.get_host(), diff --git a/import_export_celery/tasks.py b/import_export_celery/tasks.py index ef3083b..0f786d9 100644 --- a/import_export_celery/tasks.py +++ b/import_export_celery/tasks.py @@ -1,5 +1,6 @@ # Author: Timothy Hobbs hobbs.cz> from django.utils import timezone +from django.db.models import QuerySet import os from celery import shared_task @@ -215,7 +216,7 @@ def run_export_job(pk): export_job = models.ExportJob.objects.get(pk=pk) resource_class = export_job.get_resource_class() queryset = export_job.get_queryset() - qs_len = len(queryset) + qs_len = queryset.count() if isinstance(queryset, QuerySet) else len(queryset) class Resource(resource_class): def __init__(self, export_job, *args, **kwargs):