From 291eebdba72305ab9cf105a455a1c7922221c846 Mon Sep 17 00:00:00 2001 From: Pieter Lambrecht Date: Wed, 28 Sep 2022 10:39:20 +0200 Subject: [PATCH] move logic from deserialize to to_internal_value --- netbox/extras/api/customfields.py | 6 ++++++ netbox/extras/models/customfields.py | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/netbox/extras/api/customfields.py b/netbox/extras/api/customfields.py index cb35b4e73..26636d67f 100644 --- a/netbox/extras/api/customfields.py +++ b/netbox/extras/api/customfields.py @@ -69,6 +69,12 @@ class CustomFieldsDataField(Field): "values." ) + for cf in self._get_custom_fields(): + if cf.name in data.keys(): + # Convert the mixed array of dict and id's into id's only + if cf.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT: + data[cf.name] = [obj['id'] if isinstance(obj, dict) else obj for obj in data[cf.name]] or None + # If updating an existing instance, start with existing custom_field_data if self.parent.instance: data = {**self.parent.instance.custom_field_data, **data} diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index cab096019..43c4f9671 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -293,9 +293,8 @@ class CustomField(CloningMixin, ExportTemplatesMixin, WebhooksMixin, ChangeLogge model = self.object_type.model_class() return model.objects.filter(pk=value).first() if self.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT: - valueids = [obj['id'] if isinstance(obj, dict) else obj for obj in value] or None model = self.object_type.model_class() - return model.objects.filter(pk__in=valueids) + return model.objects.filter(pk__in=value) return value def to_form_field(self, set_initial=True, enforce_required=True, for_csv_import=False):