mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Add display_field kwarg to DynamicModelChoiceMixin
This commit is contained in:
@ -716,9 +716,7 @@ class RackElevationFilterForm(RackFilterForm):
|
||||
queryset=Rack.objects.all(),
|
||||
label='Rack',
|
||||
required=False,
|
||||
widget=APISelectMultiple(
|
||||
display_field='display_name',
|
||||
)
|
||||
display_field='display_name'
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
@ -1048,10 +1046,8 @@ class ComponentTemplateCreateForm(ComponentForm):
|
||||
)
|
||||
device_type = DynamicModelChoiceField(
|
||||
queryset=DeviceType.objects.all(),
|
||||
widget=APISelect(
|
||||
display_field='model'
|
||||
)
|
||||
)
|
||||
description = forms.CharField(
|
||||
required=False
|
||||
)
|
||||
@ -1739,10 +1735,8 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
|
||||
rack = DynamicModelChoiceField(
|
||||
queryset=Rack.objects.all(),
|
||||
required=False,
|
||||
widget=APISelect(
|
||||
display_field='display_name'
|
||||
)
|
||||
)
|
||||
position = forms.TypedChoiceField(
|
||||
required=False,
|
||||
empty_value=None,
|
||||
@ -1764,10 +1758,8 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
|
||||
)
|
||||
device_type = DynamicModelChoiceField(
|
||||
queryset=DeviceType.objects.all(),
|
||||
widget=APISelect(
|
||||
display_field='model'
|
||||
)
|
||||
)
|
||||
device_role = DynamicModelChoiceField(
|
||||
queryset=DeviceRole.objects.all()
|
||||
)
|
||||
@ -2078,9 +2070,7 @@ class DeviceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEditF
|
||||
device_type = DynamicModelChoiceField(
|
||||
queryset=DeviceType.objects.all(),
|
||||
required=False,
|
||||
widget=APISelect(
|
||||
display_field="model",
|
||||
)
|
||||
display_field='model'
|
||||
)
|
||||
device_role = DynamicModelChoiceField(
|
||||
queryset=DeviceRole.objects.all(),
|
||||
@ -2184,9 +2174,7 @@ class DeviceFilterForm(BootstrapMixin, LocalConfigContextFilterForm, TenancyFilt
|
||||
queryset=DeviceType.objects.all(),
|
||||
required=False,
|
||||
label='Model',
|
||||
widget=APISelectMultiple(
|
||||
display_field="model",
|
||||
)
|
||||
display_field='model'
|
||||
)
|
||||
platform = DynamicModelMultipleChoiceField(
|
||||
queryset=Platform.objects.all(),
|
||||
@ -2715,8 +2703,8 @@ class InterfaceForm(InterfaceCommonForm, BootstrapMixin, forms.ModelForm):
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
label='Untagged VLAN',
|
||||
widget=APISelect(
|
||||
display_field='display_name',
|
||||
widget=APISelect(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
@ -2727,8 +2715,8 @@ class InterfaceForm(InterfaceCommonForm, BootstrapMixin, forms.ModelForm):
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
label='Tagged VLANs',
|
||||
widget=APISelectMultiple(
|
||||
display_field='display_name',
|
||||
widget=APISelectMultiple(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
@ -2816,8 +2804,8 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm):
|
||||
untagged_vlan = DynamicModelChoiceField(
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
widget=APISelect(
|
||||
display_field='display_name',
|
||||
widget=APISelect(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
@ -2827,8 +2815,8 @@ class InterfaceCreateForm(ComponentCreateForm, InterfaceCommonForm):
|
||||
tagged_vlans = DynamicModelMultipleChoiceField(
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
widget=APISelectMultiple(
|
||||
display_field='display_name',
|
||||
widget=APISelectMultiple(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
@ -2885,8 +2873,8 @@ class InterfaceBulkEditForm(
|
||||
untagged_vlan = DynamicModelChoiceField(
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
widget=APISelect(
|
||||
display_field='display_name',
|
||||
widget=APISelect(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
@ -2896,8 +2884,8 @@ class InterfaceBulkEditForm(
|
||||
tagged_vlans = DynamicModelMultipleChoiceField(
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
widget=APISelectMultiple(
|
||||
display_field='display_name',
|
||||
widget=APISelectMultiple(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
@ -3514,8 +3502,8 @@ class ConnectCableToDeviceForm(BootstrapMixin, forms.ModelForm):
|
||||
queryset=Device.objects.all(),
|
||||
label='Device',
|
||||
required=False,
|
||||
widget=APISelect(
|
||||
display_field='display_name',
|
||||
widget=APISelect(
|
||||
filter_for={
|
||||
'termination_b_id': 'device_id',
|
||||
}
|
||||
@ -3632,8 +3620,8 @@ class ConnectCableToCircuitTerminationForm(BootstrapMixin, forms.ModelForm):
|
||||
termination_b_circuit = DynamicModelChoiceField(
|
||||
queryset=Circuit.objects.all(),
|
||||
label='Circuit',
|
||||
widget=APISelect(
|
||||
display_field='cid',
|
||||
widget=APISelect(
|
||||
filter_for={
|
||||
'termination_b_id': 'circuit_id',
|
||||
}
|
||||
@ -3662,8 +3650,8 @@ class ConnectCableToPowerFeedForm(BootstrapMixin, forms.ModelForm):
|
||||
queryset=Site.objects.all(),
|
||||
label='Site',
|
||||
required=False,
|
||||
widget=APISelect(
|
||||
display_field='cid',
|
||||
widget=APISelect(
|
||||
filter_for={
|
||||
'termination_b_rackgroup': 'site_id',
|
||||
'termination_b_powerpanel': 'site_id',
|
||||
@ -3674,8 +3662,8 @@ class ConnectCableToPowerFeedForm(BootstrapMixin, forms.ModelForm):
|
||||
queryset=RackGroup.objects.all(),
|
||||
label='Rack Group',
|
||||
required=False,
|
||||
widget=APISelect(
|
||||
display_field='cid',
|
||||
widget=APISelect(
|
||||
filter_for={
|
||||
'termination_b_powerpanel': 'rackgroup_id',
|
||||
}
|
||||
@ -4199,8 +4187,8 @@ class VCMemberSelectForm(BootstrapMixin, forms.Form):
|
||||
queryset=Device.objects.filter(
|
||||
virtual_chassis__isnull=True
|
||||
),
|
||||
widget=APISelect(
|
||||
display_field='display_name',
|
||||
widget=APISelect(
|
||||
disabled_indicator='virtual_chassis'
|
||||
)
|
||||
)
|
||||
|
@ -413,9 +413,9 @@ class ObjectChangeFilterForm(BootstrapMixin, forms.Form):
|
||||
user = DynamicModelMultipleChoiceField(
|
||||
queryset=User.objects.all(),
|
||||
required=False,
|
||||
display_field='username',
|
||||
widget=APISelectMultiple(
|
||||
api_url='/api/users/users/',
|
||||
display_field='username'
|
||||
)
|
||||
)
|
||||
changed_object_type = forms.ModelChoiceField(
|
||||
|
@ -287,10 +287,8 @@ class PrefixForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
label='VLAN',
|
||||
widget=APISelect(
|
||||
display_field='display_name'
|
||||
)
|
||||
)
|
||||
role = DynamicModelChoiceField(
|
||||
queryset=Role.objects.all(),
|
||||
required=False
|
||||
@ -569,8 +567,8 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldModel
|
||||
queryset=Rack.objects.all(),
|
||||
required=False,
|
||||
label='Rack',
|
||||
widget=APISelect(
|
||||
display_field='display_name',
|
||||
widget=APISelect(
|
||||
filter_for={
|
||||
'nat_device': 'rack_id'
|
||||
},
|
||||
@ -583,8 +581,8 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldModel
|
||||
queryset=Device.objects.all(),
|
||||
required=False,
|
||||
label='Device',
|
||||
widget=APISelect(
|
||||
display_field='display_name',
|
||||
widget=APISelect(
|
||||
filter_for={
|
||||
'nat_inside': 'device_id'
|
||||
}
|
||||
@ -604,10 +602,8 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldModel
|
||||
queryset=IPAddress.objects.all(),
|
||||
required=False,
|
||||
label='IP Address',
|
||||
widget=APISelect(
|
||||
display_field='address'
|
||||
)
|
||||
)
|
||||
primary_for_parent = forms.BooleanField(
|
||||
required=False,
|
||||
label='Make this the primary IP for the device/VM'
|
||||
|
@ -11,6 +11,7 @@ from django.db.models import Count
|
||||
from django.forms import BoundField
|
||||
from django.urls import reverse
|
||||
|
||||
from utilities.api import get_serializer_for_model
|
||||
from utilities.choices import unpack_grouped_choices
|
||||
from utilities.validators import EnhancedURLValidator
|
||||
from . import widgets
|
||||
@ -247,6 +248,16 @@ class DynamicModelChoiceMixin:
|
||||
filter = django_filters.ModelChoiceFilter
|
||||
widget = widgets.APISelect
|
||||
|
||||
def __init__(self, *args, display_field='name', **kwargs):
|
||||
self.display_field = display_field
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def widget_attrs(self, widget):
|
||||
return {
|
||||
'display-field': self.display_field
|
||||
}
|
||||
|
||||
def get_bound_field(self, form, field_name):
|
||||
bound_field = BoundField(form, self, field_name)
|
||||
|
||||
|
@ -240,8 +240,8 @@ class ClusterAddDevicesForm(BootstrapMixin, forms.Form):
|
||||
)
|
||||
devices = DynamicModelMultipleChoiceField(
|
||||
queryset=Device.objects.filter(cluster__isnull=True),
|
||||
widget=APISelectMultiple(
|
||||
display_field='display_name',
|
||||
widget=APISelectMultiple(
|
||||
disabled_indicator='cluster'
|
||||
)
|
||||
)
|
||||
@ -575,8 +575,8 @@ class VMInterfaceForm(BootstrapMixin, forms.ModelForm):
|
||||
untagged_vlan = DynamicModelChoiceField(
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
widget=APISelect(
|
||||
display_field='display_name',
|
||||
widget=APISelect(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
@ -586,8 +586,8 @@ class VMInterfaceForm(BootstrapMixin, forms.ModelForm):
|
||||
tagged_vlans = DynamicModelMultipleChoiceField(
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
widget=APISelectMultiple(
|
||||
display_field='display_name',
|
||||
widget=APISelectMultiple(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
@ -679,8 +679,8 @@ class VMInterfaceCreateForm(BootstrapMixin, forms.Form):
|
||||
untagged_vlan = DynamicModelChoiceField(
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
widget=APISelect(
|
||||
display_field='display_name',
|
||||
widget=APISelect(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
@ -690,8 +690,8 @@ class VMInterfaceCreateForm(BootstrapMixin, forms.Form):
|
||||
tagged_vlans = DynamicModelMultipleChoiceField(
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
widget=APISelectMultiple(
|
||||
display_field='display_name',
|
||||
widget=APISelectMultiple(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
@ -773,8 +773,8 @@ class VMInterfaceBulkEditForm(BootstrapMixin, BulkEditForm):
|
||||
untagged_vlan = DynamicModelChoiceField(
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
widget=APISelect(
|
||||
display_field='display_name',
|
||||
widget=APISelect(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
@ -784,8 +784,8 @@ class VMInterfaceBulkEditForm(BootstrapMixin, BulkEditForm):
|
||||
tagged_vlans = DynamicModelMultipleChoiceField(
|
||||
queryset=VLAN.objects.all(),
|
||||
required=False,
|
||||
widget=APISelectMultiple(
|
||||
display_field='display_name',
|
||||
widget=APISelectMultiple(
|
||||
full=True,
|
||||
additional_query_params={
|
||||
'site_id': 'null',
|
||||
|
Reference in New Issue
Block a user