diff --git a/netbox/templates/virtualization/virtualmachine_component_add.html b/netbox/templates/virtualization/virtualmachine_component_add.html index 34a8f3c3d..aafefffa1 100644 --- a/netbox/templates/virtualization/virtualmachine_component_add.html +++ b/netbox/templates/virtualization/virtualmachine_component_add.html @@ -22,12 +22,6 @@ {{ component_type|bettertitle }}
-
- -
-

{{ parent }}

-
-
{% render_form form %}
diff --git a/netbox/virtualization/forms.py b/netbox/virtualization/forms.py index b2cb25e94..ab0e10f04 100644 --- a/netbox/virtualization/forms.py +++ b/netbox/virtualization/forms.py @@ -3,7 +3,7 @@ from django.core.exceptions import ValidationError from dcim.choices import InterfaceModeChoices from dcim.constants import INTERFACE_MTU_MAX, INTERFACE_MTU_MIN -from dcim.forms import INTERFACE_MODE_HELP_TEXT +from dcim.forms import INTERFACE_MODE_HELP_TEXT, InterfaceCommonForm from dcim.models import Device, DeviceRole, Platform, Rack, Region, Site from extras.forms import ( AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldModelCSVForm, CustomFieldModelForm, CustomFieldFilterForm, @@ -619,10 +619,13 @@ class VMInterfaceForm(BootstrapMixin, forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + virtual_machine = VirtualMachine.objects.get( + pk=self.initial.get('virtual_machine') or self.data.get('virtual_machine') + ) + # Add current site to VLANs query params - site = self.instance.virtual_machine.site - if site is not None: - # Add current site to VLANs query params + site = virtual_machine.site + if site: self.fields['untagged_vlan'].widget.add_additional_query_param('site_id', site.pk) self.fields['tagged_vlans'].widget.add_additional_query_param('site_id', site.pk) @@ -644,9 +647,8 @@ class VMInterfaceForm(BootstrapMixin, forms.ModelForm): class VMInterfaceCreateForm(BootstrapMixin, forms.Form): - virtual_machine = forms.ModelChoiceField( - queryset=VirtualMachine.objects.all(), - widget=forms.HiddenInput() + virtual_machine = DynamicModelChoiceField( + queryset=VirtualMachine.objects.all() ) name_pattern = ExpandableNameField( label='Name' @@ -708,9 +710,9 @@ class VMInterfaceCreateForm(BootstrapMixin, forms.Form): pk=self.initial.get('virtual_machine') or self.data.get('virtual_machine') ) - site = getattr(virtual_machine.cluster, 'site', None) - if site is not None: - # Add current site to VLANs query params + # Add current site to VLANs query params + site = virtual_machine.site + if site: self.fields['untagged_vlan'].widget.add_additional_query_param('site_id', site.pk) self.fields['tagged_vlans'].widget.add_additional_query_param('site_id', site.pk)