From 4e4006dc2fbfb5282737318a526f69205c40ec7e Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 26 Oct 2022 11:46:56 -0700 Subject: [PATCH] 7961 optimize loading csv test data --- netbox/netbox/views/generic/bulk_views.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index 1bc64be3f..bd9983a9b 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -333,13 +333,19 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView): from utilities.forms import CSVModelChoiceField new_objs = [] + ids = [int(record["id"]) for record in records] + qs = self.queryset.model.objects.filter(id__in=ids) + print(qs) + objs = {} + for obj in qs: + objs[obj.id] = obj + for row, data in enumerate(records, start=1): - try: - obj = self.queryset.model.objects.get(pk=data["id"]) - except ObjectDoesNotExist: + if int(data["id"]) not in objs: form.add_error('csv', f'Row {row} id: {data["id"]} Does not exist') raise ValidationError("") + obj = objs[int(data["id"])] obj_form = self.model_form(data, headers=headers, instance=obj) # The form should only contain fields that are in the CSV