Просмотр исходного кода

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
Daniel Sheppard 6 месяцев назад
Родитель
Сommit
5d7c8318aa
1 измененных файлов с 14 добавлено и 6 удалено
  1. 14 6
      netbox/ipam/forms/model_forms.py

+ 14 - 6
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