From a3322d9cc26a355090dea312a5a839ec0f398764 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 6 Aug 2025 20:48:32 -0500 Subject: [PATCH] Fixes: #19996 - Correct dynamic query parameters for IP Address field in Add/Edit Service form --- netbox/ipam/forms/model_forms.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index 83bb42a4f..c5e6739ed 100644 --- a/netbox/ipam/forms/model_forms.py +++ b/netbox/ipam/forms/model_forms.py @@ -21,7 +21,7 @@ from utilities.forms.rendering import FieldSet, InlineFields, ObjectAttribute, T from utilities.forms.utils import get_field_value from utilities.forms.widgets import DatePicker, HTMXSelect from utilities.templatetags.builtins.filters import bettertitle -from virtualization.models import VMInterface +from virtualization.models import VMInterface, VirtualMachine __all__ = ( 'AggregateForm', @@ -783,10 +783,6 @@ class ServiceForm(NetBoxModelForm): queryset=IPAddress.objects.all(), required=False, label=_('IP Addresses'), - query_params={ - 'device_id': '$device', - 'virtual_machine_id': '$virtual_machine', - } ) comments = CommentField() @@ -818,13 +814,28 @@ class ServiceForm(NetBoxModelForm): if (parent_object_type_id := get_field_value(self, 'parent_object_type')): try: parent_type = ContentType.objects.get(pk=parent_object_type_id) + if parent_type.model_class() == Device: + self.fields['ipaddresses'].widget.add_query_params({ + 'device_id': '$parent', + }) + elif parent_type.model_class() == VirtualMachine: + self.fields['ipaddresses'].widget.add_query_params({ + 'virtual_machine_id': '$parent', + }) + elif parent_type.model_class() == FHRPGroup: + self.fields['ipaddresses'].widget.add_query_params({ + 'fhrpgroup_id': '$parent', + }) model = parent_type.model_class() self.fields['parent'].queryset = model.objects.all() self.fields['parent'].widget.attrs['selector'] = model._meta.label_lower self.fields['parent'].disabled = False self.fields['parent'].label = _(bettertitle(model._meta.verbose_name)) except ObjectDoesNotExist: + print('Except') pass + else: + print('No obj_type') if self.instance and self.instance.pk and parent_object_type_id != self.instance.parent_object_type_id: self.initial['parent'] = None