diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py
index 10b999dd4..330de872a 100644
--- a/netbox/dcim/forms.py
+++ b/netbox/dcim/forms.py
@@ -17,8 +17,8 @@ from utilities.forms import (
APISelect, APISelectMultiple, add_blank_choice, ArrayFieldSelectMultiple, BootstrapMixin, BulkEditForm,
BulkEditNullBooleanSelect, ChainedFieldsMixin, ChainedModelChoiceField, ChainedModelMultipleChoiceField,
CommentField, ComponentForm, ConfirmationForm, CSVChoiceField, ExpandableNameField, FilterChoiceField,
- FlexibleModelChoiceField, Livesearch, SelectWithDisabled, SmallTextarea, SlugField,
- FilterTreeNodeMultipleChoiceField,
+ FilterTreeNodeMultipleChoiceField, FlexibleModelChoiceField, Livesearch, SelectWithDisabled, SelectWithPK,
+ SmallTextarea, SlugField,
)
from virtualization.models import Cluster
from .constants import (
@@ -2272,6 +2272,9 @@ class VirtualChassisForm(BootstrapMixin, forms.ModelForm):
class Meta:
model = VirtualChassis
fields = ['master', 'domain']
+ widgets = {
+ 'master': SelectWithPK,
+ }
class VCMemberSelectForm(BootstrapMixin, ChainedFieldsMixin, forms.Form):
diff --git a/netbox/templates/dcim/virtualchassis_edit.html b/netbox/templates/dcim/virtualchassis_edit.html
index 1e68c39f6..3dded3960 100644
--- a/netbox/templates/dcim/virtualchassis_edit.html
+++ b/netbox/templates/dcim/virtualchassis_edit.html
@@ -7,7 +7,7 @@
{{ pk_form.pk }}
{{ formset.management_form }}
-
+
{% block title %}{% if vc_form.instance %}Editing {{ vc_form.instance }}{% else %}New Virtual Chassis{% endif %}{% endblock %}
{% if vc_form.non_field_errors %}
@@ -29,6 +29,9 @@
Device
+ ID
+ Rack/Unit
+ Serial
Position
Priority
@@ -44,6 +47,21 @@
{{ device }}
+ {{ device.pk }}
+
+ {% if device.rack %}
+ {{ device.rack }} / {{ device.position }}
+ {% else %}
+ N/A
+ {% endif %}
+
+
+ {% if device.serial %}
+ {{ device.serial }}}
+ {% else %}
+ N/A
+ {% endif %}
+
{{ form.vc_position }}
{{ form.vc_priority }}
diff --git a/netbox/utilities/forms.py b/netbox/utilities/forms.py
index a20825d13..13e1e10f1 100644
--- a/netbox/utilities/forms.py
+++ b/netbox/utilities/forms.py
@@ -119,7 +119,7 @@ class ColorSelect(forms.Select):
"""
Extends the built-in Select widget to colorize each .
"""
- option_template_name = 'colorselect_option.html'
+ option_template_name = 'widgets/colorselect_option.html'
def __init__(self, *args, **kwargs):
kwargs['choices'] = COLOR_CHOICES
@@ -144,7 +144,14 @@ class SelectWithDisabled(forms.Select):
Modified the stock Select widget to accept choices using a dict() for a label. The dict for each option must include
'label' (string) and 'disabled' (boolean).
"""
- option_template_name = 'selectwithdisabled_option.html'
+ option_template_name = 'widgets/selectwithdisabled_option.html'
+
+
+class SelectWithPK(forms.Select):
+ """
+ Include the primary key of each option in the option label (e.g. "Router7 (4721)").
+ """
+ option_template_name = 'widgets/select_option_with_pk.html'
class ArrayFieldSelectMultiple(SelectWithDisabled, forms.SelectMultiple):
diff --git a/netbox/utilities/templates/colorselect_option.html b/netbox/utilities/templates/widgets/colorselect_option.html
similarity index 100%
rename from netbox/utilities/templates/colorselect_option.html
rename to netbox/utilities/templates/widgets/colorselect_option.html
diff --git a/netbox/utilities/templates/widgets/select_option_with_pk.html b/netbox/utilities/templates/widgets/select_option_with_pk.html
new file mode 100644
index 000000000..5dc70a870
--- /dev/null
+++ b/netbox/utilities/templates/widgets/select_option_with_pk.html
@@ -0,0 +1 @@
+ {{ widget.label }}{% if widget.value %} ({{ widget.value }}){% endif %}
\ No newline at end of file
diff --git a/netbox/utilities/templates/selectwithdisabled_option.html b/netbox/utilities/templates/widgets/selectwithdisabled_option.html
similarity index 100%
rename from netbox/utilities/templates/selectwithdisabled_option.html
rename to netbox/utilities/templates/widgets/selectwithdisabled_option.html