diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index c81af4478..efc71e5b4 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -635,6 +635,14 @@ class InterfaceFilter(django_filters.FilterSet): tag = django_filters.CharFilter( name='tags__slug', ) + vlan_id = django_filters.CharFilter( + method='filter_vlan_by_pk', + name='vlan_pk', + ) + vlan = django_filters.CharFilter( + method='filter_vlan_by_id', + name='vid', + ) class Meta: model = Interface @@ -649,6 +657,12 @@ class InterfaceFilter(django_filters.FilterSet): except Device.DoesNotExist: return queryset.none() + def filter_vlan_by_pk(self, queryset, name, value): + return queryset.filter(Q(untagged_vlan_id=value) | Q(tagged_vlans=value)) + + def filter_vlan_by_id(self, queryset, name, value): + return queryset.filter(Q(untagged_vlan_id__vid=value) | Q(tagged_vlans__vid=value)) + def filter_type(self, queryset, name, value): value = value.strip().lower() return {