diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index c95e76d14e..49127c79d0 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -946,28 +946,28 @@ def filter_virtual_machine(self, queryset, name, value): @register_filterset class VLANGroupFilterSet(OrganizationalModelFilterSet, TenancyFilterSet): scope_type = MultiValueContentTypeFilter() - region = django_filters.NumberFilter( + region = MultiValueNumberFilter( method='filter_scope' ) - site_group = django_filters.NumberFilter( + site_group = MultiValueNumberFilter( method='filter_scope' ) - site = django_filters.NumberFilter( + site = MultiValueNumberFilter( method='filter_scope' ) - location = django_filters.NumberFilter( + location = MultiValueNumberFilter( method='filter_scope' ) - rack_group = django_filters.NumberFilter( + rack_group = MultiValueNumberFilter( method='filter_scope' ) - rack = django_filters.NumberFilter( + rack = MultiValueNumberFilter( method='filter_scope' ) - cluster_group = django_filters.NumberFilter( + cluster_group = MultiValueNumberFilter( method='filter_scope' ) - cluster = django_filters.NumberFilter( + cluster = MultiValueNumberFilter( method='filter_scope' ) contains_vid = django_filters.NumberFilter( @@ -990,9 +990,11 @@ def search(self, queryset, name, value): def filter_scope(self, queryset, name, value): model_name = name.replace('_', '') + if not isinstance(value, (list, tuple, set)): + value = [value] return queryset.filter( scope_type=ContentType.objects.get(model=model_name), - scope_id=value + scope_id__in=value ) @@ -1343,4 +1345,4 @@ class PrimaryIPFilterSet(django_filters.FilterSet): distinct=False, to_field_name='address', label=_('Primary IPv6 (address)'), - ) + ) \ No newline at end of file