Jeremy Stretch 5 лет назад
Родитель
Сommit
afda46d587

+ 0 - 6
netbox/templates/virtualization/virtualmachine_component_add.html

@@ -22,12 +22,6 @@
                     <strong>{{ component_type|bettertitle }}</strong>
                 </div>
                 <div class="panel-body">
-                    <div class="form-group">
-                        <label class="col-md-3 control-label required">Virtual Machine</label>
-                        <div class="col-md-9">
-                            <p class="form-control-static">{{ parent }}</p>
-                        </div>
-                    </div>
                     {% render_form form %}
                 </div>
             </div>

+ 12 - 10
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)