Fix record index for related objects

Use the parent object index as record index, and its own index only on
the field name.
This commit is contained in:
Marko Hauptvogel 2025-10-30 13:33:34 +01:00
parent 8a59fc733c
commit 8452222761
2 changed files with 4 additions and 5 deletions

View File

@ -1036,8 +1036,7 @@ module-bays:
response = self.client.post(reverse('dcim:devicetype_bulk_import'), data=form_data, follow=True)
self.assertHttpStatus(response, 200)
# TODO record index should be 2
self.assertContains(response, "Record 3 module-bays[3].name: This field is required.")
self.assertContains(response, "Record 2 module-bays[3].name: This field is required.")
def test_export_objects(self):
url = reverse('dcim:devicetype_list')

View File

@ -368,7 +368,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
error_messages.append(f"Record {index} {prefix}{field_name}: {err}")
return error_messages
def _save_object(self, model_form, request):
def _save_object(self, model_form, request, parent_idx):
_action = 'Updated' if model_form.instance.pk else 'Created'
# Save the primary object
@ -396,7 +396,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
else:
# Replicate errors on the related object form to the import form for display and abort
raise ValidationError(
self._compile_form_errors(f.errors, index=i, prefix=f'{field_name}[{i}]')
self._compile_form_errors(f.errors, index=parent_idx, prefix=f'{field_name}[{i}]')
)
# Enforce object-level permissions on related objects
@ -481,7 +481,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
restrict_form_fields(model_form, request.user)
if model_form.is_valid():
obj = self._save_object(model_form, request)
obj = self._save_object(model_form, request, i)
saved_objects.append(obj)
else:
# Raise model form errors