mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-08 00:28:16 -06:00
Try to filter relations to site and device role
This commit is contained in:
parent
c745c7bbfb
commit
f52668732d
@ -592,24 +592,19 @@ class InterfaceListFilter(django_filters.FilterSet):
|
|||||||
label='Search',
|
label='Search',
|
||||||
)
|
)
|
||||||
site_id = django_filters.ModelMultipleChoiceFilter(
|
site_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=Site.objects.all(),
|
method='_filter_site',
|
||||||
label='Site (ID)',
|
label='Site (ID)',
|
||||||
)
|
)
|
||||||
site = django_filters.ModelMultipleChoiceFilter(
|
site = django_filters.ModelMultipleChoiceFilter(
|
||||||
name='site__slug',
|
method='_filter_site',
|
||||||
queryset=Site.objects.all(),
|
|
||||||
to_field_name='slug',
|
|
||||||
label='Site name (slug)',
|
label='Site name (slug)',
|
||||||
)
|
)
|
||||||
role_id = django_filters.ModelMultipleChoiceFilter(
|
role_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
name='device_role_id',
|
method='_filter_role',
|
||||||
queryset=DeviceRole.objects.all(),
|
|
||||||
label='Role (ID)',
|
label='Role (ID)',
|
||||||
)
|
)
|
||||||
role = django_filters.ModelMultipleChoiceFilter(
|
role = django_filters.ModelMultipleChoiceFilter(
|
||||||
name='device_role__slug',
|
method='_filter_role',
|
||||||
queryset=DeviceRole.objects.all(),
|
|
||||||
to_field_name='slug',
|
|
||||||
label='Role (slug)',
|
label='Role (slug)',
|
||||||
)
|
)
|
||||||
type = django_filters.CharFilter(
|
type = django_filters.CharFilter(
|
||||||
@ -625,6 +620,20 @@ class InterfaceListFilter(django_filters.FilterSet):
|
|||||||
model = Interface
|
model = Interface
|
||||||
fields = ['form_factor', 'enabled', 'mtu']
|
fields = ['form_factor', 'enabled', 'mtu']
|
||||||
|
|
||||||
|
def filter_site(self, queryset, name, value):
|
||||||
|
try:
|
||||||
|
site = Site.objects.select_related('device_id__site').get(**{name: value})
|
||||||
|
return queryset
|
||||||
|
except Device.DoesNotExist:
|
||||||
|
return queryset.none()
|
||||||
|
|
||||||
|
def filter_role(self, queryset, name, value):
|
||||||
|
try:
|
||||||
|
site = DeviceRole.objects.select_related('device_id__device_role').get(**{name: value})
|
||||||
|
return queryset
|
||||||
|
except Device.DoesNotExist:
|
||||||
|
return queryset.none()
|
||||||
|
|
||||||
def filter_type(self, queryset, name, value):
|
def filter_type(self, queryset, name, value):
|
||||||
value = value.strip().lower()
|
value = value.strip().lower()
|
||||||
return {
|
return {
|
||||||
|
Loading…
Reference in New Issue
Block a user