diff --git a/netbox/core/models/jobs.py b/netbox/core/models/jobs.py
index 779e767b6..b36cc16f5 100644
--- a/netbox/core/models/jobs.py
+++ b/netbox/core/models/jobs.py
@@ -116,7 +116,7 @@ class Job(models.Model):
verbose_name_plural = _('jobs')
def __str__(self):
- return str(self.job_id)
+ return self.name
def get_absolute_url(self):
# TODO: Employ dynamic registration
diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py
index eb4c2060e..67c8d6c56 100644
--- a/netbox/netbox/views/generic/bulk_views.py
+++ b/netbox/netbox/views/generic/bulk_views.py
@@ -506,8 +506,12 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
# If indicated, defer this request to a background job & redirect the user
if form.cleaned_data['background_job']:
- if job := process_request_as_job(self.__class__, request):
- msg = _('Created background job {job}').format(
+ job_name = _('Bulk import {count} {object_type}').format(
+ count=len(form.cleaned_data['data']),
+ object_type=model._meta.verbose_name_plural,
+ )
+ if job := process_request_as_job(self.__class__, request, name=job_name):
+ msg = _('Created background job {job.pk}: {job.name}').format(
url=job.get_absolute_url(),
job=job
)
diff --git a/netbox/utilities/jobs.py b/netbox/utilities/jobs.py
index d7ace484c..800d54949 100644
--- a/netbox/utilities/jobs.py
+++ b/netbox/utilities/jobs.py
@@ -24,7 +24,7 @@ def is_background_request(request):
return getattr(request, '_background', False)
-def process_request_as_job(view, request):
+def process_request_as_job(view, request, name=None):
"""
Process a request using a view as a background job.
"""
@@ -39,6 +39,7 @@ def process_request_as_job(view, request):
# Enqueue a job to perform the work in the background
return AsyncViewJob.enqueue(
+ name=name,
user=request.user,
view_cls=view,
request=request_copy,