From 5d7c8318aa5f199ba14cee56a04fcb5d70f465a8 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Fri, 8 Aug 2025 08:52:03 -0500 Subject: [PATCH] Fixes: #19996 - Correct dynamic query parameters for IP Address field in Add/Edit Service form (#20040) * Fixes: #19996 - Correct dynamic query parameters for IP Address field in Add/Edit Service form * Remove debug and do some cleanup --- netbox/ipam/forms/model_forms.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index 83bb42a4f..fffe21425 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() @@ -815,10 +811,22 @@ class ServiceForm(NetBoxModelForm): super().__init__(*args, **kwargs) - if (parent_object_type_id := get_field_value(self, 'parent_object_type')): + if parent_object_type_id := get_field_value(self, 'parent_object_type'): try: parent_type = ContentType.objects.get(pk=parent_object_type_id) model = parent_type.model_class() + if model == Device: + self.fields['ipaddresses'].widget.add_query_params({ + 'device_id': '$parent', + }) + elif model == VirtualMachine: + self.fields['ipaddresses'].widget.add_query_params({ + 'virtual_machine_id': '$parent', + }) + elif model == FHRPGroup: + self.fields['ipaddresses'].widget.add_query_params({ + 'fhrpgroup_id': '$parent', + }) self.fields['parent'].queryset = model.objects.all() self.fields['parent'].widget.attrs['selector'] = model._meta.label_lower self.fields['parent'].disabled = False