diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index 6fd81ff74..37f850c49 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -1013,14 +1013,16 @@ class DeviceFilterSet( queryset=DeviceType.objects.all(), label=_('Device type (ID)'), ) - role_id = django_filters.ModelMultipleChoiceFilter( - field_name='role_id', + role_id = TreeNodeMultipleChoiceFilter( + field_name='role', queryset=DeviceRole.objects.all(), + lookup_expr='in', label=_('Role (ID)'), ) - role = django_filters.ModelMultipleChoiceFilter( - field_name='role__slug', + role = TreeNodeMultipleChoiceFilter( queryset=DeviceRole.objects.all(), + field_name='role', + lookup_expr='in', to_field_name='slug', label=_('Role (slug)'), ) diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index f7a2afbda..284f39f67 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -2955,9 +2955,13 @@ class ConsolePortTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedF module_type = ModuleType.objects.create(manufacturer=manufacturer, model='Module Type 1') - DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') - DeviceRole.objects.create(name='Device Role 2', slug='device-role-2') - DeviceRole.objects.create(name='Device Role 3', slug='device-role-3') + roles = ( + DeviceRole(name='Device Role 1', slug='device-role-1'), + DeviceRole(name='Device Role 2', slug='device-role-2'), + DeviceRole(name='Device Role 3', slug='device-role-3'), + ) + for role in roles: + role.save() locations = ( Location(name='Location 1', slug='location-1', site=sites[0]), diff --git a/netbox/extras/tests/test_filtersets.py b/netbox/extras/tests/test_filtersets.py index dd75e91ef..84d7aad5a 100644 --- a/netbox/extras/tests/test_filtersets.py +++ b/netbox/extras/tests/test_filtersets.py @@ -904,8 +904,8 @@ class ConfigContextTestCase(TestCase, ChangeLoggedFilterSetTests): DeviceRole(name='Device Role 2', slug='device-role-2'), DeviceRole(name='Device Role 3', slug='device-role-3'), ) - for role in roles: - role.save() + for device_role in device_roles: + device_role.save() platforms = ( Platform(name='Platform 1', slug='platform-1'),